DE69732663T2 - Verfahren zur erzeugung und änderung von 3d modellen und korrelation von solchen modellen mit 2d bildern - Google Patents

Verfahren zur erzeugung und änderung von 3d modellen und korrelation von solchen modellen mit 2d bildern Download PDF

Info

Publication number
DE69732663T2
DE69732663T2 DE69732663T DE69732663T DE69732663T2 DE 69732663 T2 DE69732663 T2 DE 69732663T2 DE 69732663 T DE69732663 T DE 69732663T DE 69732663 T DE69732663 T DE 69732663T DE 69732663 T2 DE69732663 T2 DE 69732663T2
Authority
DE
Germany
Prior art keywords
modeled
image
user
freed
representation
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.)
Expired - Lifetime
Application number
DE69732663T
Other languages
English (en)
Other versions
DE69732663D1 (de
Inventor
Grant J. Muncey
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 Systems 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 Systems Inc filed Critical Adobe Systems Inc
Publication of DE69732663D1 publication Critical patent/DE69732663D1/de
Application granted granted Critical
Publication of DE69732663T2 publication Critical patent/DE69732663T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Architecture (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Description

  • Die vorliegende Erfindung bezieht sich im allgemeinen auf Computergraphik bzw. grafische Datenverarbeitung, und spezifischer auf Techniken bzw. Verfahren zum Arbeiten mit drei-dimensionalen (3D) Objekten bzw. Gegenständen und zwei-dimensionalen (2D) Bildern.
  • Psychologen und Philosophen haben seit einiger Zeit nun zugestimmt, daß Menschen nicht bloß passive Empfänger von diskreten Bits von Sinnes- bzw. Wahrnehmungsdaten sind. Vielmehr wird eine Wahrnehmung automatisch fokussiert. Wir erkennen bzw. nehmen Dinge gegen einen Hintergrund ("Figur" gegen "Boden", in Gestalt-Terminologie) wahr. Wahrnehmung ist, durch ihre Natur allein, Wahrnehmung von etwas. An einem beliebigen Punkt in der Zeit achten wir auf einige besondere Elemente in unserem Wahrnehmungsfeld und nicht auf andere; wir legen nicht die gleiche Aufmerksamkeit auf jedes Element. In diesem Sinn ist eine Selektivität in der Wahrnehmung natürlich; und es wäre unnatürlich und pathologisch, beispielsweise gleichzeitig jeden möglichen Punkt im Sichtfeld von jemanden zu beachten.
  • Dies kann als ein Gemeinplatz erscheinen. Jeder kennt bzw. weiß es, denkt jedoch, daß wir es bedauerlicherweise ignorieren müssen, wenn wir Bilder erzeugen oder manipulieren bzw. verarbeiten. Wenn ein Fotograph eine Aufnahme von etwas macht oder ein Fernseher ein Bild von etwas zeigt, zwingt die Natur des Mediums, jeden Punkt zu erstellen bzw. zu rendern – den Gegenstand ebenso wie den Hintergrund, die Figur ebenso wie den Boden. Gleichermaßen zwingen aktuelle digitale Bildbearbeitungs-Pakete die Anwender, auf dem Niveau von Bildpixeln zu denken und arbeiten; und alle Pixel bzw. Bildpunkte, ob Figur und Boden, werden gleich erzeugt.
  • Jedoch ist die Anzahl von digitalisierten Bildern enorm und zusehends wachsend. Viele Computeranwender manipulieren nun digitalisierte Bilder, insbesondere digitalisierte Fotografien. Eine Fotografie ist natürlich zweidimensional (2D). Die überwältigende Mehrheit von computerisierten 2D Bildern sind einfache Anordnungen von undifferenzierten Pixeln bzw. Bildpunkten. Es gibt jedoch einen wachsenden Bedarf an 3D Modellen. Ganze Büchereien bzw. Bibliotheken von Bildern (Linienkunst zu feiner Kunst) warten, um digitalisiert zu werden und dann 3D zu werden. Zusätzlich fordern Unterhaltung und Spielmärkte zunehmend originale 3D Modelle.
  • Derzeitige Anwenderschnittstellen-Begrenzungen machen es jedoch extrem kompliziert, 3D Modelle zu erzeugen. Das übliche Verfahren ist, den Gegenstand mathematisch von Grund auf mit spezialisierter, komplizierter Software zu modellieren und dann eine Textur- bzw. Oberflächenstruktur-Abbildung auf die Oberflächen anzuwenden. Diese Verfahren erfordern beträchtliches technisches Fachwissen und teure Software; selbst dann erscheinen die Ergebnisse häufig unrealistisch.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung erlaubt es einem Anwender, mit zweidimensionalen (2D) Bildern und dreidimensionalen (3D) modellierten Objekten bzw. Gegenständen auf eine intuitive Weise zu Wechsel wirken und sich übergangslos zwischen den größtenteils getrennten Welten von 2D Bildbearbeitung und 3D Modellierung zu bewegen. Der Anwender ist imstande, durch Durchführen einfacher Aktionen bzw. Vorgänge schwierige Aufgaben durchzuführen, wie beispielsweise ein Extrahieren eines 3D Objekts (Erzeugen eines 3D Modells) aus einer 2D Repräsentation bzw. Darstellung und ein Manipulieren des 3D Objekts (möglicherweise in einer 2D Darstellung einer 3D Szene) und ein Anordnen modellierter 3D Objekte in 2D Darstellungen von 3D Szenen.
  • Kurz gesagt, erkennt und verwertet die Erfindung das natürlichen, intuitive Erfassen des menschlichen Anwenders eines 2D Bilds als eine Darstellung von etwas. Ein Verwender bzw. Anwender muß nicht ein Mathematiker sein, um die meisten eindeutig darstellenden Bilder zu verstehen. Die meisten 2D Bilder beinhalten bereits eine große Menge von Information über die 3D Eigenschaften der dargestellten Gegenstände, und sogar Kinder können bereits diese Information befördern bzw. übermitteln. In dieser Anmeldung wird der Ausdruck "2D Bild" oder einfach "Bild" normalerweise genommen werden, um eine weite Vielfalt von 2D Repräsentationen von 3D Raum zu umfassen. Beispielsweise kann das 2D Bild ein Bitmapbild bzw. eine Rastergraphik entsprechend einer digitalisierten Fotografie einer physikalischen Szene sein, eine gerenderte 2D Projektion von einem 3D Computermodell einer Szene, oder einfach Linientechnik, welche eine 3D Szene darstellt.
  • Die vorliegende Erfindung bezieht sich auf eine interaktive Computerumgebung, wie dies in Anspruch 1 dargelegt ist.
  • In Betrieb stellt der Anwender eine Eingabe zum Erstellen einer Aufzeichnung zwischen distinktiven bzw. verschiedenen Elementen eines gewünschten 3D modellierten Objekts bzw. Gegenstands und entsprechender Elemente in dem Bild zur Verfügung. Diese Elemente können ausgeprägte Punkte oder Ränder bzw. Kanten sein oder eine Kombination der zwei. Der Anwender plaziert Regel- bzw. Steuerelemente eines gewünschten 3D modellierten Objekts an gewünschten Stellen oder Ausrichtungen bzw. Orientierungen in einem 2D Bild. Die Erfindung antwortet auf eine derartige Regel- bzw. Steuerelement-Plazierung bzw. -Anordnung durch ein Bestimmen von Parametern, welche sich auf wenigstens eine von Gestalt, Ausrichtung und Position des modellierten Objekts im 3D Raum beziehen und ein Projizieren wenigstens einiger Elemente des modellierten Objekts auf eine Ebene, welche normalerweise als die Bildebene bezeichnet wird.
  • Gemäß einem Aspekt der Erfindung sind in einer Ausführungsform Abschnitte des 2D Bilds mit sichtbaren Oberflächenabschnitten des modellierten Objekts assoziiert, wie es auf die Bildebene projiziert ist bzw. wird. Sobald der Anwender das Objekt manipuliert, wie beispielsweise durch Verschieben oder Drehen, verbleiben die Abschnitte des Bilds mit den Oberflächenabschnitten des Objekts in seiner neuen Position oder Ausrichtung assoziiert. Sobald sich die Oberflächenabschnitte des modellierten Objekts ändern, werden die assoziierten Abschnitte des Bilds vorzugsweise in ähnlicher Weise transformiert bzw. umgewandelt. Somit nimmt, wenn das Bild eine Darstellung eines 3D Objekts beinhaltet und die Regel- bzw. Steuerelemente an Stellen in dem Bild plaziert bzw, angeordnet sind, welche die korrespondierenden Elemente des angezeigten bzw. dargestellten Objekts repräsentieren bzw. darstellen, das modellierte Objekt das Aussehen des in dem Bild dargestellten Objekts an. Das Ergebnis ist, daß der Anwender eigentlich die 2D Darstellung des Objekts auswählen, aus der Szene herausziehen und sie als ein 3D Objekt manipulieren kann.
  • Gemäß einem weiteren Aspekt der Erfindung wechselwirkt der Anwender in einer besonderen Ausführungsform mit einer niedrig auflösenden, Graustufen-Version des ursprünglichen Bilds. Dies reduziert Speicherbedürfnisse und beschleunigt das Rendern bzw. Wiedergeben, wenn der Anwender das 3D Modell manipuliert. Wenn die gewünschten Manipulationen abgeschlossen sind, kann der Anwender spezifizieren, daß das 3D Modell bei derselben Auflösung und Bit-Tiefe wie das Originalbild gerendert wird.
  • Gemäß einem noch weiteren Aspekt der Erfindung wird in einer anderen Ausführungsform, wenn das Bild eine Darstellung einer gewünschten Umgebung (Szene) für das modellierte Objekt beinhaltet und die Regel- bzw. Steuerelemente an Stellen oder Ausrichtungen plaziert bzw. angeordnet sind, welche 2D Repräsentationen bzw. Darstellungen von gewünschten 3D Anordnungen und Ausrichtungen in der Szene für die Regel- bzw. Steuerelemente sind, das modellierte Objekt tatsächlich in der Szene angeordnet und mit seinen Regel- bzw. Steuerelementen an den gewünschten Orten bzw. Stellen angezeigt.
  • Die Anwendereingabe zum Erstellen der Aufzeichnung von den Regel- bzw. Steuerelementen des 3D Objekts zu den Stellen in dem 2D Bild kann verschiedene Formen annehmen. In bestimmten Ausführungsformen ist bzw. wird das modellierte Objekt als Drahtdarstellung bzw. Drahtmodell bzw. Drahtgittermodell mit helleuchtenden bzw. hervorgehobenen Regel- bzw. Steuerpunkten (manchmal als Handgriffe bzw. Ziehpunkte bezeichnet) dargestellt und der Anwender plaziert die Re gel- bzw. Steuerpunkte durch Ziehen bzw. Schleppen eines jeden Handgriffs zu der gewünschten Stelle relativ zu dem Bild. Alternativ könnte der Anwender Kanten bzw. Ränder des modellierten Objekts zu gewünschten Stellen in dem Bild ziehen. In diesen Implementierungen spezifiziert der Anwender jedes Regel- bzw. Steuerelement individuell, spezifiziert dann seine Anordnung in dem Bild und wiederholt dies dann für die zusätzlichen Regel- bzw. Steuerelemente. D. h., die Spezifikation von Regel- bzw. Steuerpunkten ist mit der Anordnung von Regel- bzw. Steuerpunkten verschachtelt. Ein etwas unterschiedliches bzw. anderes Paradigma bzw. Denkmuster bedingt eine Spezifikation der Regel- bzw. Steuerelemente in einer ersten Sequenz, gefolgt durch eine Spezifikation der gewünschten Anordnungen in der Szene in einer zweiten, nachfolgenden Sequenz. Allerdings müßte, wenn die Regel- bzw. Steuerelemente des 3D Objekts durch eine Vorgabe spezifiziert sind, der Anwender lediglich die Stellen in dem Bild spezifizieren, um die Aufzeichnung zu erstellen.
  • Es gibt eine Anzahl von Wegen, wie das System in dem Fall antworten könnte, daß die anwender-spezifizierte Aufzeichnung nicht mit der Projektion des modellierten Objekts auf die Bildebene (die Ebene des Bilds) im Einklang ist. Beispielsweise kann, wo das System das modellierte Objekt als ein Drahtgittermodell mit hervorgehobenen Regel- bzw. Steuerpunkten anzeigt, das System ein Anzeigen der Kanten einstellen, wodurch ein sichtbarer Anhaltspunkt zur Verfügung gestellt wird, daß die versuchte Anordnung eines Regel- bzw. Steuerpunkts ungültig ist. Alternativ kann das System eine explizite Warnung transportieren.
  • Eine detektierte Folgewidrigkeit bzw. Inkonsistenz der Regel- bzw. Steuerpunktanordnung des Anwenders kann aufgrund der Tatsache sein, daß einer oder mehrere der gespeicherten Projektionsparameter des Bilds (Mittelpunkt und Gebiet des Blickwinkels) sich von den tatsächlichen Parametern des Bilds unterscheiden. Da es das System vorzugsweise erlaubt, die Projektionsparameter einzustellen, kann es der Anwender angebracht finden, die Projektionsparameter einzustellen.
  • Ein weiteres Verständnis der Natur und Vorteile der vorliegenden Erfindung kann unter Bezugnahme auf die verbleibenden Abschnitte der Spezifikation bzw. Beschreibung und der Zeichnungen realisiert werden.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist eine Blockdiagramm eines Computersystems, welches die vorliegende Erfindung verkörpert;
  • 2A2G stellen eine Serie von Ansichten zur Verfügung, welche Anwender-Wechselwirkungen bzw. -Beeinflussungen zum Zweck einer Erstellung bzw. Erzeugung eines 3D Modells eines Kastens aus einem einzelnen 2D Bild illustrieren;
  • 3A und 3B stellen eine Serie von Ansichten zur Verfügung, welche Anwender-Wechselwirkungen zum Zweck eines Manipulierens des 3D Modells illustrieren;
  • 4A4E illustrieren das grundlegende geometrische Rahmenwerk der perspektivischen Projektion, welche in der Erfindung verwendet wird;
  • 5A5C zeigen, wie ein die vorliegende Erfindung verkörperndes Programm die Position und Ausrichtung eines rechtwinkeligen Festkörpers bestimmt;
  • 6A6C zeigen, wie das Programm die Position und Ausrichtung eines Rotationskörpers bestimmt;
  • 7A7C zeigen, wie das Programm die Position und Orientierung einer Kugel bestimmt;
  • 8 zeigt eine Überkopfansicht eines 3D Modells eines modellierten Kastens;
  • 9 ist eine Darstellung der Konstruktionsmodus-Symbolleiste;
  • 10 ist eine Darstellung der Konstruktionsmodus-Symbolleiste;
  • 11 zeigt die Betätigung der Kamerabewegungs-Werkzeuge bzw. -Symbole;
  • 12 stellt einen Tisch dar, welcher die Cursor- bzw. Eingabezeiger-Erscheinung zeigt, wenn unterschiedliche Werkzeuge ausgewählt sind bzw. werden;
  • 13A und 13B stellen eine Serie von Ansichten zur Verfügung, welche Anwender-Beeinflussungen bzw. -Interaktionen zum Zweck eines Erstellens eines 3D Modells eines Zylinders aus einem einzelnen 2D Bild illustrieren;
  • 14A14D stellen eine Serie von Ansichten zur Verfügung, welche Anwender-Beeinflussungen zum Zweck eines Erstellens eines 3D Modells eines komplexen Rotationskörpers aus einem einzelnen 2D Bild illustrieren;
  • 15A15C stellen eine Serie von Ansichten zur Verfügung, welche Anwender-Beeinflussungen bzw. -Wechselwirkungen zum Zweck eines Anordnens eines 3D Modells in eine 2D Repräsentation einer 3D Szene illustrieren;
  • 16A ist ein Flußdiagramm, welches die Initialisierungs-Aktivitäten des Programms zeigen;
  • 16B ist ein Diagramm, welches die Hauptereignis-Schleife des Programms zeigt;
  • 16C ist ein Flußdiagramm, welches den Symbolleisten-Handhaber bzw. das Symbolleisten-Steuerungsprogramm des Programms zeigt; und
  • 17A17C zeigen, wie Information über Beziehungen zwischen Objekten verwendet werden kann, um zusätzliche positionelle bzw. Positions-Information zur Verfügung zu stellen.
  • Beschreibung von spezifischen Ausführungsformen
  • 1. Einleitung
  • 1.1 Softwareübersicht
  • Die vorliegende Erfindung ist in einem Computerprogramm implementiert, welches als FreeD (oder manchmal als das Programm) bezeichnet wird, welches es einem Anwender erlaubt, 3D Modelle aus einzelnen Bildern zu konstruieren. Die augenblickliche bzw. gegenwärtige Implementierung des Programms ist ein Plug-In bzw. eine Programmerweiterung für das wohl bekannte Bildbearbeitungs-Programm, welches durch Adobe Systems Incorporated von San Jose, Kalifornien unter der Marke Photoshop verkauft wird. Das Programm ist augenblicklich in einer Macintosh (MacOS) und Windows-Version von Cognicon, Inc. von San Jose, Kalifornien verfügbar. Das Programm ist in der C++ Programmiersprache geschrieben, jedoch würden andere Programmiersprachen geeignet sein.
  • Die Beschreibung, die folgt, wird zuerst eine Hardwareübersicht beinhalten, gefolgt durch eine Beschreibung von einigen grundlegenden Anwender-Wechselwirkungen bzw. -Beeinflussungen bzw. -Interaktionen. Die zugrunde liegende projektive Transformations-Technologie wird dann beschrie ben werden, gefolgt durch spezifische Implementierungsmerkmale und Details.
  • 1.2 Hardwareübersicht
  • 1 ist ein vereinfachtes Blockdiagramm eines Computersystems 10, in welchem die vorliegende Erfindung verkörpert bzw. ausgeführt werden kann. Die vorliegende Erfindung ist in einem Computerprogramm implementiert, welches als FreeD bezeichnet wird, welches es einem Ver- bzw. Anwender erlaubt, 3D Modelle aus einzelnen Bildern bzw. Einzelbildern zu konstruieren. Die auf diesem hohen Niveau illustrierte Computersystem-Konfiguration ist Standard und als solche ist 1 als "Stand der Technik" gekennzeichnet. Ein Computersystem, wie beispielsweise das System 10, geeignet programmiert mit einem Programm wie beispielsweise FreeD, um die vorliegende Erfindung zu verkörpern, ist jedoch nicht Stand der Technik.
  • In Übereinstimmung mit bekannter Praxis beinhaltet das Computersystem einen Prozessor 12, welcher mit einer Anzahl von peripheren Einrichtungen über ein Bus-Subsystem 15 kommuniziert. Diese peripheren Einrichtungen beinhalten typischerweise ein Speicher-Subsystem 17, eine Anwender-Eingabemöglichkeit 20, ein Anzeige-Subsystem 22, Ausgabeeinrichtungen, wie beispielsweise einen Drucker 23 und ein Dateispeichersystem 25.
  • In diesem Zusammenhang wird der Ausdruck "Bus-Subsystem" allgemein bzw. generisch so verwendet, um jeden beliebigen Mechanismus zu beinhalten, um die verschiedenen Komponenten des Systems miteinander kommunizieren zu lassen, wie dies beabsichtigt ist. Mit der Ausnahme der Eingabeeinrichtungen und der Anzeige, müssen die anderen Komponenten nicht an derselben physikalischen Stelle sein. Somit könnten beispielsweise Abschnitte des Dateispeichersystems über verschiedene lokale oder Weitverkehrs-Netzwerke verbunden sein, beinhaltend Telefonleitungen. In ähnlicher Weise müssen die Eingabeeinrichtungen und Anzeige nicht an derselben Stelle wie der Prozessor vorhanden sein, obwohl erwartet wird, daß die vorliegende Erfindung am häufigsten in dem Zusammenhang von PCs und Arbeitsstationen implementiert werden wird.
  • Das Bus-Subsystem 15 ist schematisch als ein einzelner Bus gezeigt, jedoch ein typisches System weist eine Anzahl von Bussen, wie beispielsweise einen lokalen Bus und einen oder mehrere Erweiterungsbusse (z. B. ADB, SCSI, ISA, EISA, MCA, NuBus oder PCI) auf, wie auch serielle und parallele Ports bzw. Anschlüsse. Netzwerkverbindungen werden üblicherweise durch eine Einrichtung, wie beispielsweise einen Netzwerkadapter auf einem dieser Erweiterungsbusse oder einem Modem auf einem seriellen Anschluß erstellt. Das Computersystem kann ein Arbeitsplatzrechner oder ein tragbares System sein.
  • Das Speicher-Subsystem 17 beinhaltet eine Anzahl von Speichern, welche einen Haupt-Direktzugriffsspeicher (RAM) 30 und einen Nur-Lesespeicher (ROM) 32 beinhalten, in welchen festgelegte Befehle bzw. Instruktionen gespeichert sind. In dem Fall von Macintosh-kompatiblen Personal Computern würde dies Abschnitte das Betriebssystem beinhalten; in dem Fall von IBM-kompatiblen Personal Computern würde dies das BIOS (grundlegendes Eingabe/Ausgabesystem, basis input/output system) beinhalten.
  • Die Anwendereingabe-Möglichkeit 20 beinhaltet typischerweise eine Tastatur 40 und kann weiters eine Anzeigeeinrichtung 42 und einen Scanner 43 beinhalten. Die Anzeige- bzw. Zeigeeinrichtung kann eine indirekt zeigende Einrichtung sein, wie beispielsweise eine Maus, Trackball, Touchpad bzw. Berührungsfeld, oder grafisches Tablett, oder eine direkt zeigende Einrichtung, wie beispielsweise ein Touchscreen bzw. Berührungsschirm, welcher in die Anzeige eingebaut ist. Andere Typen von Anwender-Eingabeeinrichtungen, wie beispielsweise Spracherkennungs-Systeme sind ebenfalls möglich.
  • Das Anzeige-Subsystem 22 beinhaltet typischerweise eine Anzeige-Regel- bzw. -Steuereinrichtung 44 und eine Anzeigeeinrichtung 45, gekoppelt an die Regel- bzw. Steuereinrichtung bzw. den Controller. Die Anzeigeeinrichtung kann eine Kathodenstrahlröhre (CRT), eine Flachbildschirm-Einrichtung, wie beispielsweise eine Flüssigkristallanzeige (LCD), oder eine Projektionseinrichtung sein. Der Anzeige-Controller stellt Regel- bzw. Steuersignale an die Anzeigeeinrichtung zur Verfügung und beinhaltet normalerweise einen Anzeigespeicher (in der Figur nicht gezeigt), um die Pixel bzw. Bildpunkte zu speichern, welche auf der Anzeigeeinrichtung erscheinen. Das Anzeige-Subsystem kann auch eine nicht-sichtbare Anzeige zur Verfügung stellen, wie beispielsweise eine Audioausgabe.
  • Das Dateispeichersystem stellt eine dauerhafte (nicht flüchtige) Aufbewahrung für Programm und Datendateien zur Verfügung und beinhaltet typischerweise wenigstens ein Festplattenlaufwerk 46 und wenigstens ein Diskettenlaufwerk 47. Es können auch andere Einrichtungen, wie beispielsweise ein CD-ROM-Laufwerk 48 und optische Laufwerke vorhanden sein. Zusätzlich kann das System Festplattenlaufwerke des Typs mit entfernbaren bzw. Wechselmedienkassetten beinhalten. Wie oben angeführt, kann eines oder mehrere der Laufwerke an einer entfernten Stelle angeordnet sein, wie beispielsweise in einem Server auf einem lokalen Netzwerk oder auf einer Seite des World Wide Web im Internet.
  • 2. Grundlegende Anwenderbeeinflussungen
  • Wie oben angeführt, ist die vorliegende Erfindung in einem Computerprogramm implementiert, bezeichnet als FreeD, welches es einem Anwender erlaubt, 3D Modelle aus einzelnen Bildern (typischerweise, jedoch nicht notwendigerweise, gescannte Fotografien) zu konstruieren. Der grundlegende Vorgang aus der Sicht des Anwenders wird in Verbindung mit zwei Tätigkeiten bzw. Aufgaben beschrieben werden, erstens ein Erzeugen eines 3D Modells aus einem einzelnen 2D Bild (2A2G), und zweitens ein Manipulieren des 3D Modells, um seine Anordnung oder Orientierung relativ zu der in dem 2D Bild (3A und 3B) dargestellten Szene zu ändern. Die Zeichnungen, welche diese zwei Sequenzen illustrieren, werden Linientechnik sein, welche Bitmap-Bildschirmfotos repräsentieren, die auf der Anzeige erscheinen. Das Bild für diese anfängliche Beschreibung ist ein Bild eines Paars von rechtwinkeligen Kästen. Andere Geometrien werden in späteren Abschnitten beschrieben werden.
  • Im allgemeinen manipuliert der Anwender Eingabeeinrichtungen mit Bezug auf das Bildschirmbild, um gewünschte Änderungen zu bewirken. Dies wird typischerweise erledigt, indem ein Cursor bzw. Eingabezeiger an eine bestimmte Position auf dem Bildschirm plaziert bzw. angeordnet wird, welche mit der angezeigten Anordnung bzw. Stelle eines zu mo difizierenden Objekts bzw. Gegenstands übereinstimmt, und einer oder mehrere Anwenderereignisse bzw. -maßnahmen, wie beispielsweise Tastenanschläge oder Mausbetätigungen ausgeführt werden. Mausbetätigen beinhalten ein Knopfdrücken, Knopfloslassen, Mausbewegung, Klicks und Züge. Ein Mausklick bezieht sich darauf, daß der Anwender einen der Knöpfe drückt und losläßt, ohne die Maus zu bewegen, jedoch wird der Ausdruck auch verwendet, um sich auf den Vorgang eines Drückens von einem der Knöpfe zu beziehen. Ein Ziehen (oder manchmal Klicken-und-Ziehen) bezieht sich darauf, daß der Anwender den Cursor mit der Maus positioniert, einen der Knöpfe drückt, die Maus zu einer neuen Position bewegt, wobei der Knopf noch gedrückt ist, und den Knopf an der neuen Stelle losläßt. Der Effekt von Mausknopfdrücken, Mausknopfloslassen, Klicks und Zügen kann modifiziert werden, indem eine Tastaturtaste oder ein anderer Mausknopf (falls vorhanden) niedergehalten wird. Bezüge auf Mausbetätigungen dienen nur der Illustration, wobei sich versteht, wie oben diskutiert, daß andere Typen von Eingabeeinrichtungen und andere Typen von Zeigereinrichtungen verwendet werden können.
  • In Verbindung mit der anfänglichen Beschreibung der Anwender-Interaktionen wird auf ein Eintreten in verschiedene Modi bzw. Betriebsarten Bezug genommen. Eine detaillierte Beschreibung dieser Modi und verschiedener anderer Merkmale einer repräsentativen Ausführungsform wird in späteren Abschnitten zur Verfügung gestellt werden.
  • Auch für Zwecke dieser anfänglichen Beschreibung wird angenommen, daß die FreeD internen geometrischen Parameter mit den geometrischen Parametern übereinstimmen, welche durch die Kamera auferlegt werden, welche zum Aufnehmen des Bilds verwendet wird. Eine detaillierte Beschreibung zum Einstellen dieser Parameter wird in späteren Abschnitten zur Verfügung gestellt werden.
  • 2.1 Erzeugen eines 3D Modells aus einem 2D Bild
  • 2A repräsentiert ein 2D Bild eines Paars von 3D Kästen 100 und 102 in einer 3D Szene, welche durch ein willkürliches Szenenfragment 105 vorgeschlagen wird. Die Kästen bzw. Schachteln werden manchmal als die bildhaft dargestellten Kästen bezeichnet. Während die Kästen als in einer Szene seiend genannt werden, was für die meisten Fotografien typisch ist, kann FreeD mit Bildern von Objekten bzw. Gegenständen gegen ebene bzw. bloße Hintergründe arbeiten.
  • Wie es bei projizierten Bildern von Kästen inhärent ist, sind nie mehr als drei der sechs Oberflächen sichtbar. Weiters können Abschnitte von einigen oder allen der Oberflächen durch andere Gegenstände in der Szene versteckt sein. Die vorliegende Erfindung erlaubt es dem Anwender, mit dem Bild wechselzuwirken, ein 3D Modell der abgebildeten Box bzw. Schachtel zu erstellen bzw. zu erzeugen, und das 3D Modell zu manipulieren. Zu Zwecken dieser anfänglichen Besprechung bzw. Diskussion wird vorausgesetzt, daß die interne Repräsentation von FreeD von Kameraeinstellungen, auf welcher es seine projektive Geometrieberechnungen basiert, in Übereinstimmung mit den Kameraeinstellungen ist, welche (im Falle einer Fotografie) verwendet oder (in dem Fall eines gerenderten Bilds) vorausgesetzt wurden, um das Bild zu erzeugen bzw. zu generieren. Anwendereinstellungen von Kameraeinstellungen werden in späteren Abschnitten besprochen bzw. diskutiert werden.
  • In einer besonderen Ausführungsform erzeugt das Programm ein Graustufenbild mit niedrigerer Auflösung entsprechend dem ursprünglichen bzw. Originalbild. Es ist dieses Bild, bezeichnet als das Konstruktionsmodusbild, mit welchem der Anwender wechselwirkt. Dies wird primär aus Gründen von Speicherbedürfnissen und Geschwindigkeit vorgenommen, wenn der Anwender das 3D Modell manipuliert, da das Modell auf dem Bildschirm gerendert bzw. wiedergegeben werden muß, wenn beliebige seiner geometrischen Parameter geändert werden. Wenn der Anwender beliebige gewünschte Manipulationen abgeschlossen hat, kann der Anwender spezifizieren, daß das 3D Modell endgültig bei derselben Auflösung und Bit-Tiefe wie das Originalbild gerendert wird.
  • 2B repräsentiert den Bildschirm, nachdem der Anwender einen Modus aufgerufen hat (bezeichnet als der Konstruktionsmodus), um einen 3D Kasten zu erzeugen. Wie ersehen werden kann, erscheint eine kleine Linienzeichnung eines projizierten 3D Kastens 110, als der Käfig bezeichnet, überlagert auf dem Bildschirmbild an einer Ausgangsanordnung bzw. Default-Stelle. In dieser Linientechnik-Darstellung wird der Käfig 110 in dicken schwarzen Linien gezeichnet. In der gegenwärtigen Implementierung von FreeD wird der Käfig in dünnen grünen Linien angezeigt bzw. dargestellt, wenn er aktiv ist. Der Käfig kann als eine Vorlage bzw. Formatvorlage gesehen werden.
  • Der Käfig erscheint bei einer diagonalen Betrachtung von einem Punkt vor und oberhalb des Käfigs und nur die sichtbaren Kanten werden angezeigt. Der Käfig weist vier kleine Quadrate auf, drei an den sichtbaren Boden- bzw. Unterkanten und eines an der Oberseite der nächstgelegenen Kante. Die kleinen Quadrate werden als Handgriffe bzw. Ziehpunkte bezeichnet und die vier Handgriffe werden manchmal als der Nord-, Süd-, Ost- und West-Handgriff entsprechend den üblichen Kompaßpunkten bezeichnet. Die Handgriffe sind mit Bezugsziffern 115N, 115S, 115E und 115W gezeigt, um so mit dieser Terminologie übereinzustimmen. Der angezeigte Käfig ist eine Repräsentation bzw. Darstellung des 3D Modells. Um ein 3D Modell entsprechend dem abgebildeten Kasten in der Szene zu erstellen, manipuliert der Anwender die Ziehpunkte, um sie über entsprechenden Ecken des abgebildeten Kastens anzuordnen.
  • Der Anwender kann auf einen Ziehpunkt klicken und ziehen, was in einer Neueinstellung der Größe der Kanten resultiert oder die beinhalteten bzw. eingeschlossenen Winkel verändert. Der Anwender kann auf eine der Kanten des Käfigs klicken und diese ziehen, um den gesamten Käfig auszuwählen und zu bewegen. Im allgemeinen können die Handgriffe in beliebiger Reihenfolge positioniert werden, und wenn ein Handgriff gezogen wird, verbleiben die anderen Handgriffe bzw. Ziehpunkte an ihren ursprünglichen bzw. Ausgangspositionen.
  • Es gibt viele Arten für den Anwender, um den Käfig an den abgebildeten 2D Kasten anzupassen, wie beispielsweise ein Finden eines Punkts auf dem abgebildeten Kasten, wo 3 Kanten gesehen werden können, um sich zu treffen. Abhängig von der Orientierung bzw. Ausrichtung des Kastens und möglichen anderen Objekten in der Szene können bestimmte dieser charakteristischen Punkte auf dem Kasten verdeckt werden. 2C zeigt eine Darstellung eines Kastens 117, wobei bestimmte Ecken 118 als geeignete Kandidaten angezeigt werden.
  • Es sollte festgehalten werden, daß, wenn die Ziehpunkte derart angeordnet sind, daß sie nicht mit den Ecken eines ordnungsgemäß projizierten rechtwinkeligen Festkörpers übereinstimmen, nur die Ziehpunkte und ihre Verbindungslinien angezeigt werden. In einem derartigen Fall können die Ziehpunkte oder Linien auch in einer unterschiedlichen Farbe angezeigt werden. Jedoch werden, sobald die Ziehpunkte angeordnet sind, um genug Information zur Verfügung zu stellen, um einen 3D rechtwinkeligen Festkörper zu definieren, alle sichtbaren Kanten des Käfigs, übereinstimmend mit einem ordnungsgemäß projizierten rechtwinkeligen Festkörper, erneut angezeigt werden.
  • 2D2G zeigen eine Sequenz von Ansichten, welche mögliche Ergebnisse von Anwendertätigkeiten beim Positionieren der Ziehpunkte an jeweiligen Ecken des Kastens 100 darstellen. 2D zeigt die Annäherung eines Bewegens des gesamten Käfigs um den Süd-Ziehpunkt 115S auf der entsprechenden Ecke des abgebildeten Kastens zu positionieren. 2E zeigt eine Alternative, wo der Anwender nur den Süd-Ziehpunkt 115S in Position gezogen hat, wodurch der Käfig dahin verformt wird, wo er nicht länger einen ordnungsgemäß projizierten rechtwinkeligen Festkörper repräsentiert. 2F zeigt den West-Ziehpunkt 115W, welcher dann positioniert worden ist, um mit der Unterkante des abgebildeten Kastens 100 ausgerichtet zu sein. An diesem Punkt sind die Positionen der Ziehpunkte derart, daß sie mit einem ordnungsgemäß projizierten rechtwinkeligen Festkörper übereinstimmen, sie jedoch nicht mit dem abgebildeten Kasten übereinstimmen.
  • 2G zeigt den Nord- und Ost-Ziehpunkt 115N und 115E, welche nachfolgend an den entsprechenden Ecken des abgebil deten Kastens 100 positioniert worden sind. Es sollte beachtet bzw. festgehalten werden, daß ein Ziehpunkt an einer versteckten Ecke positioniert werden kann. In dieser Situation positioniert der Anwender den Ziehpunkt, bis die Linien des angezeigten Käfigs eine sichtbar akzeptierbare Anpassung an die sichtbaren Kanten bzw. Ränder des abgebildeten Kastens zur Verfügung stellen.
  • 2.2 Manipulieren des 3D-Modells in der Szene
  • Sobald die Ziehpunkte so positioniert worden sind, daß die Drahtgitteransicht eines Käfigs 110 mit dem abgebildeten Kasten übereinstimmt, kann der Anwender zu einem Modus (als der Manipulationsmodus bezeichnet) umschalten, wo das 3D Modell verschoben und gedreht werden kann. 3A zeigt das Resultat, nachdem der Anwender das 3D Modell des Kastens 100 gedreht hat. Es wird festgestellt, daß die Rotation bzw. Drehung in einem Aufdecken bzw. Enthüllen von Flächen bzw. Bereichen des Kastens resultieren kann, welche ursprünglich nicht gezeigt waren. In wenigstens einer Implementierung gibt es keinen Versuch, um diese Flächen zu füllen, und sie werden als grau angezeigt. 3B zeigt das Ergebnis, nachdem der Anwender das 3D Modell des Kastens verschoben hat, ohne es zu drehen.
  • Wenn der Anwender den modellierten 3D Kasten bewegt, werden die Abschnitte des Bilds, welche den Flächen des abgebildeten Kastens entsprechen, auf die entsprechenden Flächen des 3D Modells (des Käfigs) aufgezeichnet. In dem Ausmaß, in welchem der Käfig gut an den abgebildeten Kasten angepaßt wurde, ist die Erscheinung des Modells, sobald es bewegt wird, ähnlich der Erscheinung, welche der Kasten aufweisen würde, wenn er im tatsächlichen Leben bewegt würde. Umge kehrt würde, wenn der Anwender keinen Versuch gemacht hat, den Käfig auf dem abgebildeten Kasten zu positionieren, das Modell Oberflächen aufweisen, welche irgendwelchen Pixeln entsprechen, welche sich innerhalb der Flächen des Käfigs befanden, und würde nicht wie der abgebildete Kasten erscheinen.
  • 3. Zugrundeliegende Technologie
  • Die Techniken bzw. Verfahren sind anwendbar auf Bilder, welche gebildet unter Verwendung von einfacher perspektivischer Projektion worden sind, wie beispielsweise jener, welche durch die meisten Kameras verwendet wird. Der Betrieb von FreeD beinhaltet ein Durchführen projektiver Geometrieberechnungen bzw. Berechnungen einer projektiven Geometrie, basierend auf gespeicherten Kameraeinstellungen. Bezugnahme auf eine virtuelle Kamera von FreeD werden unter Bezugnahme auf die gespeicherten Kameraeinstellungen vorgenommen, welche verwendet werden, um die Berechnungen durchzuführen.
  • 3.1 Definitionen
  • 4A4E illustrieren das grundlegende geometrische Rahmenwerk der perspektivischen Projektion, welche zugrunde liegt und in der besonderen Ausführungsform dieser Erfindung verwendet wird. Eine Anzahl von Definitionen unten ist unter Bezugnahme auf diese Figuren.
  • 4A und 4B zeigen das Koordinatensystem, welches verwendet wird, um zu beschreiben, wie eine Kamera 120 ein Bild 122 eines Objekts 125 in einer realen Bildebene 127 bildet. Das Zentrum bzw. die Mitte der Kameralinse (in den Figuren aus 0 gekennzeichnet) wird als der Blickpunkt bezeichnet. Ein Gegenstand vor dem Blickpunkt wird durch die Kamera in der realen Bildebene 127 an einer Brennweite f hinter der Linse abgebildet. Diese Brennweite würde dieselbe sein wie die Brennweite der Kameralinse, wenn sie auf unendlich fokussiert wäre. Es ist bequem, eine virtuelle Bildebene 130 in einem Abstand f vor dem Blickpunkt zu definieren und Bezüge bzw. Bezugnahme auf die Bildebene werden sich normalerweise auf die virtuelle Bildebene beziehen. Ein Punkt in der Bildebene 130 wird als ein Bildpunkt bezeichnet und eine Linie in der Bildebene als eine Bildlinie. Ein Punkt im 3D Raum wird als ein Raumpunkt und eine Linie im 3D Raum als eine Raumlinie bezeichnet werden.
  • Die (x, y)-Koordinaten in der Bildebene sind in Ausdrücken eines 2D Koordinatensystems, wo x aufwärts zunimmt und y nach rechts, aus dem Kamerablickpunkt gesehen, zunimmt. Der Ursprung dieses Systems wird an dem Punkt angeordnet sein, wo das Zentrum der Kameraansicht die Bildebene durchdringt (d. h., wo die optische Achse der Linse die Bildebene schneidet). Die (X, Y, Z) Koordinaten im Raum sind in Ausdrücken eines 3D Koordinatensystems, welches seinen Ursprung an dem Kamerablickpunkt aufweist. X nimmt in einer Aufwärtsrichtung zu, Y nimmt nach rechts zu, und Z nimmt in einer Richtung weg von dem Blickpunkt zu der Szene hin zu. Das 3D Koordinatensystem ist "rechtshändig bzw. rechtsgängig.
  • 4C und 4D illustrieren sogenannte N-Vektoren, welche in der perspektivischen Geometrie verwendet werden. Eine Bezugnahme auf einen Vektor bedeutet einen "dreidimensionalen Säulenvektor von realen Komponenten", wenn nicht anders angegeben. Vektoren werden geschrieben werden (a, b, c).
  • Eine Bezugnahme auf eine Matrix bedeutet eine "dreidimensionale quadratische Matrix von realen Komponenten", wenn nicht anders angegeben. Matrizen werden geschrieben werden [Reihe 1 Spalte 1, Reihe 1 Spalte 2, Reihe 1 Spalte 3, ..., Reihe 3 Spalte 3].
  • Die Notation bzw. Bezeichnung N[u] repräsentiert die Normalisierung des Vektors u wie folgt: N[u] = u/((u1 2 + u2 2 + u3 2)1/2).
  • Die Notation u·v repräsentiert das skalare Produkt von u und v und ist gleich: u1vi + u2v2 + u3v3.
  • Die Notation u × v repräsentiert das Kreuzprodukt bzw. Vektorprodukt von u und v und ist gleich: ((u2v3 – u3v2), (u3v1 – u1v3), (u1v2 – u2v1))T.
  • Die Notation u ⊗ v repräsentiert das Tensorprodukt von u und v und ist gleich der Matrix:
    [u1v1, u1v2, u1,v3, u2v1, u2v2, u2v3, u3v1, u3v2, u3v3].
  • 4C zeigt den N-Vektor, m, eines Bildpunkts P als den normalisierten Vektor, welcher von dem Kamerablickpunkt zum Bildpunkt P zeigt. Somit ist der N-Vektor eines Punkts (x, y) in der Bildebene N [(x, y, f)T]. 4D zeigt den N-Vektor, n, einer Bildlinie L, als die Normale zu der Ebene, welche durch den Kamerablickpunkt gebildet wird und die Bildebene entlang der Bildlinie schneidet (d. h., normal auf die Ebene, welche den Gesichts- bzw. Blickpunkt und die Bildlinie beinhaltet). Somit ist der N-Vektor einer Bildlinie, deren Gleichung Ax + By + C = 0 lautet, N [(A, B, C/f)T].
  • 4E zeigt, wie eine quadratische Kurve in der Bildebene dargestellt wird. Eine quadratische Kurve in der Bildebene (ein Konus) mit einer dreidimensionalen quadratischen symmetrischen Matrix. Die Gleichung einer Quadratischen in der Bildebene ist: Ax2 + 2 Bxy + Cy2 + 2 (Dx + Ey) + F = 0 (1)
  • Die neu geschriebene Gleichung in Termen bzw. Ausdrücken des N-Vektors m = ± N [(x, y, f)T] ist: m·Qm = 0, Q = k [A, B, D/f, B, C, E/f, D/f, E/f, F/f2] (2)k ist eine zufällige bzw. willkürliche Nicht-Null-Konstante. Wenn nicht anders angegeben, wird vorausgesetzt bzw. angenommen, daß k ausgewählt ist, um die Matrix so zu skalieren, daß ihre Determinante –1 ist.
  • 3.2 Geometrie der perspektivischen Projektion
  • Die Gleichung, welche Bildpunkte zu Raumpunkten in Beziehung setzt, ist die perspektivische Projektion: x = f (X/Z), Y = f (Y/Z) (3)wo (x, y) die Koordinaten einer 2D Stelle auf einem Bild sind, (X, Y, Z) die Koordinaten der Stelle bzw. Anordnung in dem 3D Raum sind, welche sich abbildet auf (x, y), und f die Brennweite der Kameralinse ist.
  • Ein ursprüngliches bzw. letztendliches Ziel ist es, die (X, Y, Z) Werte von 3D Punkten aus ihren (x, y) Projektionen in der Bildebene zu bestimmen. Aus Gleichung (3) kann ersehen werden, daß dies nicht direkt erledigt werden kann, da nicht genug Information in dem 2D Bild vorhanden ist. Die projektive Transformation hat die dritte Dimension verflacht bzw. ausgeglichen. Um (X, Y, Z) zu erhalten, erfor dert es mehr Information als nur (x, y). Diese Information wird erzielt bzw. erhalten, indem bekannte Beziehungen zwischen den Projektionen von mehrfachen 3D Punkten verwendet werden.
  • 3.3 Projektionen von drei orthogonalen Raumlinien
  • Die Projektionen von drei orthogonalen bzw. rechtwinkeligen Raumlinien in der Bildebene können verwendet werden, um 3D Information zu erhalten. Dies ist wichtig, da viele Objekte diese Art von Merkmal beinhalten. Eine Ecke eines rechtwinkeligen Festkörpers ist ein gutes Beispiel. Es sollen die drei Raumlinien mit Richtungen m, m', und m'' Bildebenenprojektionen von p, p' und p'' aufweisen. Es sollen die N-Vektoren von p, p' und p'', n, n' und n'' sein. Die Richtung einer Raumlinie m ist der Schnitt von ihrer Bildebenenprojektion, p, mit der Konischen: Q = (n'·n'') I – ((n' ⊗ n'') + (n'' ⊗ n'))/2 (4)wo I eine 3 × 3 Identitätsmatrix ist. Es sollte beachtet werden, daß in diesem Fall die Determinante von Q nicht auf –1 normalisiert ist.
  • Der Schnitt von Q mit n (dem N-Vektor von r) ist die Richtung der Raumlinie m, welche null, eine oder zwei Lösungen aufweisen kann, wie folgt:
    • 1. Berechnen von u = N [n × (0, 0, 1)T]
    • 2. Wenn N [Qu] ± n, dann ist die einzige Lösung u.
    • 3. Berechnen v = N[n × Qu].
    • 4. Wenn v = ±u, dann ist u eine Lösung. Um die andere Lösung zu erhalten, wird u auf u + εn × u für einen zufälligen Nicht-Nullwert von ε gesetzt und der Vorgang wird bei Schritt 2 neu gestartet.
    • 5. Wenn (u·Qu) (v·Qv) > 0, dann gibt es keine Lösungen.
    • 6. Die Lösungen 1 und 2 sind N [u(|v·Qv|)1/2 + v(|u·Qu|)1/2].
  • Wenn es keine Lösungen aus dem obigen Vorgang gibt, dann können die Raumlinien nicht als rechtwinkelig bzw. orthogonal zueinander interpretiert werden. Andererseits, berechne für jeden Wert von m von oben die anderen zwei Werte m' und m'', wie folgt:
    • 7. m' = N[n' × m]
    • 8. m'' = N[n'' × m]
  • 3.4 Die Projektion eines Kreises
  • Die Projektion eines Raumkreises in der Bildebene kann auch verwendet werden, um 3D Information zu erhalten. Viele Objekte sind Rotationskörper und weisen somit kreisförmige definierende bzw. Definitionsmerkmale auf. Eine Kanne bzw. Dose ist ein gutes Beispiel. Ein Raumkreis projiziert sich auf die Bildebene als eine Ellipse (ausgenommen in dem Sonderfall, wo der Kreis "auf der Kante" steht, in welchem Fall er sich zu einer Linie projiziert). Es gibt eine Lösung einer geschlossenen Form, um die Orientierung und das Zentrum eines Raumkreises zu erhalten, wobei seine gegebenen Ellipsenbild-Projektion gegeben ist.
  • Zuerst muß die Gleichung der Bildellipse erzielt werden. Es gibt Standardtechniken bzw. -verfahren, um die Parameter A bis F für Gleichungen (1–2) zu erhalten. Es soll der Kegelschnitt bzw. die Konische Q, Gleichung (2) die Projektion eines Raumkreises mit Radius r sein. Man erhält die Eigenwerte von Q und nennt diese lamda1, lamda2 und lamda3, so daß (lamda3 < 0 < lamda1 ≤ lamda2). Es sollen auch u2 und u3 die Einheitseigenvektoren für lamda2 und lamda3 seien. Die Einheitsoberflächen-Normale für die Ebene, auf welcher der Raumkreis liegt, ist: n = sqrt ((lamda2 – lamda1)/(lamda2 – lamda3)) u2 + sqrt ((lamda1 – lamda3)/(lamda2 – lamda3)) u3. (5)
  • Der Abstand des Zentrums des Raumkreises von dem Auge ist: d = lamda13/2 r. (6)
  • Der N-Vektor m des projizierten Zentrums eines Raumkreises, gegeben als Q, seine konische Projektion und n, seine unterstützende ebene Orientierung ist: m = ±N[Q–1 n]. (7)
  • 3.5 Die 3D Position und Orientierung eines rechtwinkeligen Festkörpers
  • 5A und 5B zeigen, wie das Programm die Position und Orientierung eines rechtwinkeligen Festkörpers 150 basierend auf seiner Projektion in der Bildebene bestimmt. In den meisten Fällen präsentiert das 2D projizierte Bild eines 3D rechtwinkeligen Festkörpers verschiedene Sätze von drei zueinander rechtwinkeligen Kanten.
  • 5A zeigt eine Darstellung eines rechtwinkeligen Festkörpers 150, welcher sich etwas oberhalb des Blickpunkts befindet und so abgewinkelt ist, daß von dem Blickpunkt die obere Oberfläche noch sichtbar ist. Die Figur repräsentiert auch ein Betrachten des rechtwinkeligen Festkörpers von einem von dem Blickpunkt verschobenen Punkt. Die vier Eck punkte bzw. Scheitel (Raumpunkte) auf der oberen Oberfläche sind mit A, B, C und D gekennzeichnet und die entsprechenden Scheitel auf der unteren Oberfläche sind mit a, b, c und d gekennzeichnet (was in dieser Ansicht nicht sichtbar ist).
  • 5B zeigt schematisch die Projektion 155 eines rechtwinkeligen Festkörpers 150 in der Bildebene 130, wobei die Scheitel mit den tiefer gestellten Indizes "i" gekennzeichnet sind, um die Projektion auf die Bildebene anzuzeigen. Somit sind die Projektionen von Raumpunkten A, B, C, D, a, b, c und d Bildpunkte, welche als Ai, Bi, Ci, Di, ai, bi, ci, di bezeichnet sind, wobei ci in der projizierten Ansicht versteckt bzw. verdeckt ist.
  • Um die Position und Orientierung des rechtwinkeligen Festkörpers zu berechnen, wird zuerst die Orientierung von jeder der Kanten berechnet werden. Die Kanten bzw. Ränder sind durch Definition orthogonal bzw. rechtwinkelig zueinander, so daß das Verfahren des obigen Abschnitts 3.3, mit dem Titel "Projektionen von drei orthogonalen Raumlinien" angewendet werden kann, indem die Bildprojektionen von drei ausgewählten Kanten, beispielsweise der projizierten Kanten Ai-Di, Ai-Bi, und Ai-ai verwendet werden. Dies stellt die Orientierungen von Raumlinien A-D, A-B, und A-a zur Verfügung. Es ist auch bekannt, daß der Vertex bzw. Scheitel A entlang eines Strahls liegen muß, welcher durch den Blickpunkt, 0, geht und die Richtung des N-Vektors von Ai aufweist. Diese Randbedingung bzw. Beschränkung gilt auch für die Scheitel B, C und D.
  • Das Bild des Festkörpers stellt nicht genug Information zur Verfügung, um zu sagen, wie weit entfernt von dem Blick punkt der Festkörper ist. Dies wird schematisch in 5C gezeigt, welche den ursprünglichen rechtwinkeligen Festkörper 150, gezeigt in 5A, und einen größeren rechtwinkeligen Festkörper 160, gezeigt in gestrichelten Linien, in einer größeren Distanz von dem Blickpunkt zeigt. Dies ist nur eine inhärente Eigenschaft der projektiven Geometrie und reflektiert nur die Alltagstatsache, daß eine Tiefenwahrnehmung zwei Augen erfordert.
  • Somit wird ein zufälliger bzw. willkürlicher Raumpunkt entlang des Strahls 0-Ai aufgenommen und definiert, um an der Stelle von A zu sein. Der Schnitt von zwei Raumlinien ist bzw. wird nun gebildet. Eine der Linien tritt durch den Blickpunkt 0 und den Bildpunkt Di. Die andere Linie tritt durch A hindurch und weist die für die Kante A-D berechnete Raumorientierung auf. Der Schnitt dieser zwei Raumlinien ist die Raumstelle von D. Derselbe Vorgang wird dann durchgeführt, um die Raumpunkte B und a zu erhalten.
  • Dies liefert die Stellen bzw. Anordnungen der Raumpunkte A, B, D und a, welche vollständig die Orientierung bzw. Ausrichtung, Anordnung und Dimensionen des rechtwinkeligen Festkörpers definieren. Es soll beachtet werden, daß derselbe Vorgang an jedem Satz von drei Kanten auf dem Festkörper angewendet werden kann, welche zueinander orthogonal sind.
  • Ein Problem verbleibt. Es ist möglich, zwei Sätze von Orientierungen aus dem Verfahren des obigen Abschnitts 3.3 zu erhalten. Somit kann das obige Verfahren zwei unterschiedliche Festkörper erzeugen. In dem Fall, wo zwei oder mehrere der definierten Kanten sich an einem einzelnen Eckpunkt bzw. Scheitel treffen bzw. verbinden, ist der Vorgang zum Auswählen der richtigen Orientierung, beide Festkörper zu konstruieren und dann den einen auszuwählen, welcher nicht irgendwelche der Eckpunkte A, B, D oder a vor dem Blickpunkt versteckt. In dem Fall, wo die drei Kanten sich nicht an einem beliebigen Scheitel verbinden, gibt es nicht genug Information und der Anwender muß die ordnungsgemäße Orientierung auswählen.
  • 3.6 Die 3D Position und Orientierung eines zylindrischen Festkörpers
  • 6A und 6B sind Repräsentationen bzw. Darstellungen (ähnlich zu jenen von 5A und 5B), welche zeigen, wie das Programm die Position und Orientierung eines zylindrischen Festkörpers 170 basierend auf seiner Projektion 175 in einer Bildebene 130 bestimmt. Alle Parameter für die Form bzw. Gestalt, Orientierung und Position eines Rotationskörpers (außer für den Abstand vom Auge) kann aus einer Bildprojektion des Objekts bzw. Gegenstands erhalten werden. Vier Punkte auf dem Festkörper sind gekennzeichnet mit A, B, C und D und die Projektionen dieser Punkte in der Bildebene sind bezeichnet als Ai, Bi, Ci und Di. Es wird angenommen, daß die Punkte Ai und Ci an den Punkten einer maximalen Krümmung der Ellipse liegen und daß Bi an einem der Punkte einer minimalen Krümmung liegt. Die Parameter für Gleichung (2) können dann leicht bestimmt werden, um somit die Gleichung des Ellipsen-Kegelschnitts in Termen der Matrix Q zu ergeben.
  • Die Eigenwerte und Eigenvektoren von Q werden erhalten, indem ein Standardverfahren zum Lösen von Eigensystemen verwendet wird (welches in diesem Fall unkompliziert ist, da Q kleine Abmessungen aufweist und symmetrisch ist). Die re sultierenden Eigenwerte und Eigenvektoren werden in Gleichung (5) substituiert, um die Orientierung, n, der Ebene zu erhalten, welche den Kreis unterstützt, der das Oberteil des Objekts bildet. Ein N-Vektor m für das Zentrum des Oberteils bzw. der Oberseite wird unter Verwendung von Gleichung (7) und n von oben berechnet.
  • Der aktuelle Raumpunkt des Zentrums des Oberteils liegt irgendwo entlang von m, wobei es jedoch keine direkte Information in dem Bild über seinen exakten Abstand bzw. seine Entfernung gibt. Unabhängig von dem Wert, welcher für den Abstand von dem Auge zu dem Zentrum bzw. Mittelpunkt der Oberseite ausgewählt wurde, wird die Orientierung des Objekts dieselbe bleiben. Die Gestalt des Objekts wird ebenfalls dieselbe bleiben, außer für die Skalierung bzw. den Maßstab. Um eine exakte 3D Anordnung und Größe zu bekommen, wird der Abstand d entweder durch den Anwender eingegeben oder ein Default- bzw. Vorgabewert wird verwendet. Nun kann das Zentrum des Oberteils durch ein Entlangbewegen entlang von m um den Abstand d von dem Blickpunkt 0 festgelegt werden. Der Radius des Oberteils wird aus Gleichung (6) berechnet, was die 3D Definition des Oberteils des Objekts vervollständigt.
  • Nun müssen die Höhe und Radien des Rests des Zylinders bestimmt werden. Zuerst wird eine Ebene, bezeichnet als die XY-Ebene, konstruiert, um die Achse des Zylinders zu beinhalten und rechtwinkelig zu einer Ebene zu sein, welche die Zylinderachse und den Blickpunkt 0 beinhaltet. Als nächstes wird ein Strahl von dem Blickpunkt durch den Punkt Di projiziert. Der Punkt, wo dieser Strahl die XY-Ebene im Raum schneidet, ist der Punkt D auf dem Zylinder. Der Punkt auf der Zylinderachse, welcher der nächstgelegene zu D ist, ist das Zentrum der Basis des Zylinders und der Abstand zwischen D und dem Zentrum der Basis ist der Radius der Basis. Für den geradseitigen Zylinder von 6A und 6B bestimmt dies vollständig das Objekt im 3D Raum.
  • 6C zeigt ein projiziertes Objekt 177, welches eine kompliziertere Silhouette bzw. Außenform aufweist. Um dieses Objekt im Raum zu bestimmen, sind bzw. werden alle Punkte Ci, Ei, Fi und Di auf die XY-Ebene projiziert, welche oben berechnet wurde. Eine sanfte bzw. glatte Kurve, welche auf der XY-Ebene liegt, ist bzw. wird in diese Punkte eingepaßt. Diese Kurve bildet die Außenlinie des Objekts und definiert den Radius an allen Punkten entlang der Achse des Objekts.
  • 3.7 Die 3D Position und Orientierung eines kugelförmigen Festkörpers
  • 7A7C zeigen, wie das Programm die Position und Orientierung einer Kugel 180 basierend auf ihrer Projektion 185 in der Bildebene 130 bestimmt. Eine Kugel ist vollständig in 3D durch ihren Mittelpunkt und Radius bestimmt und die 3D Anordnung und Orientierung (außer zur Skalierung) der Kugel kann aus ihrer Projektion in der Bildebene bestimmt werden. 7A zeigt die Kugel im Raum, 7B zeigt die Kugel auf die Bildebene projiziert, und 7C zeigt eine Ansicht des Raums, hinabblickend auf die x-Achse. Die durch einen Anwender einstellbaren Regel- bzw. Steuerpunkte Ai und Bi sind Projektionen von Raumpunkten A und B (Raumpunkt B in 7A wird durch die Kugel versteckt, wobei jedoch beide Raumpunkte in 7C gesehen werden können). A und B sind die Tangenten- bzw. Berührungspunkte zwischen der Kugel und den Strahlen, raya und rayb, welche durch den Blickpunkt gehen. Das Zentrum der Kugel, Raumpunkt C, muß auf einem Strahl liegen, welcher sich in der Ebene befindet, welcher raya und rayb beinhaltet. Auch der Winkel zwischen der Mittellinie und den Strahlen muß α/2 betragen. Der Winkel α wird durch die Gleichung bestimmt: α = arccos (V0·V1)wo V0 und V1 die Richtungsvektoren der Strahlen raya und rayb sind.
  • Der Abstand von dem Blickpunkt 0 zu dem Zentrum C der Kugel kann nicht aus dem Bild der Kugel bestimmt werden, somit wird ihm ein Vorgabewert n gegeben. Wenn n, α und die Ebenegleichung der Ebene gegeben sind, welche raya und rayb beinhaltet, kann das Zentrum der Kugel leicht bestimmt werden. Der Radius r der Kugel kann nun bestimmt werden, indem grundlegende Trigonometrie verwendet wird, wie: r = sin(α/2)*n
  • Der Mittelpunkt C und der Radius r, welche die Kugel bestimmt haben, sind nun vollständig definiert, mit Ausnahme seines Abstands von dem Blickpunkt.
  • 3.8 Abbildung von Bildern auf 3D Modelle
  • Eine Technik zum Erzeugen realistisch aussehender Bilder von 3D Modellen ist, eine Technik zu verwenden, welche Texturabbilden genannt wird. Der erste Schritt beim Texturabbilden ist, Abschnitte eines Bilds mit Oberflächen auf dem 3D Modell zu assoziieren. Der zweite Schritt ist, das Modell unter Verwendung dieser Abschnitte des Bilds zu rendern.
  • FreeD eignet sich für ein Texturabbilden, da das 3D Modell direkt von einem Bild erstellt wurde. Somit ist die Übereinstimmung zwischen Abschnitten des Bilds und dem 3D Modell bereits bekannt.
  • 8 zeigt eine Überkopfansicht eines 3D Modells eines Kastens 190, welches in FreeD modelliert wurde. Zur Übersichtlichkeit zeigt die Figur nur einen Schnitt durch den Kasten. Wie üblich ist die Brennweite der Kamera f und der Blickpunkt ist an einer Stelle 0. Ray1, ray2 und ray3 zeigen Beispiele von simulierten Lichtstrahlen, welche von dem 3D Modell durch die Bildebene zu dem Blickpunkt gehen. Diese Strahlen werden in FreeD Augenstrahlen genannt.
  • 3.9 Abbilden von der Bildebene auf eine 3D Modelloberfläche
  • FreeD repräsentiert Modelle intern als einen Satz von präzisen mathematischen Gleichungen. Wenn ein Modell auf den Bildschirm gerendert wird, ist bzw. wird es von seiner mathematischen Form in eine Sammlung von ausgerichteten bzw. orientierten ebenen Polygonen (auch als Facetten bekannt) konvertiert. Jedes Polygon bzw. Vieleck liegt auf einer Ebene, welche durch einen 3D Normalvektor N und einen Abstand d von dem Blickpunkt charakterisiert werden kann. Alle Punkte Pt auf dem Polygon erfüllen die implizite 3D Ebenengleichung: Pt·N + d = 0. (8)
  • In FreeD zeigt der Normalparameter N der Ebenengleichung für jede Oberfläche auswärts von dem Inneren des Objekts, welches die Oberfläche beinhaltet. Damit eine Oberfläche von dem Blickpunkt 0 sichtbar ist, muß die folgende Gleichung halten: N·Augenstrahl > 0, (9)wo N die Normale auf das Oberflächenpolygon ist und Augenstrahl bzw. "eye ray" ist ein Strahl von einem Punkt auf dem Polygon zu dem Blickpunkt ist. In der besonderen Ansicht von 8 ist nur eine der "vertikalen" Oberflächen sichtbar, wobei die Positionen und Orientierung des Kastens vorausgegeben ist. Dies ist im Gegensatz zu der Situation in 5B, wo zwei der "vertikalen" Oberflächen sichtbar waren.
  • Für jede 3D Anordnung bzw. Stelle auf einem Oberflächenpolygon, welche sichtbar ist, gibt es eine übereinstimmende bzw. entsprechende Anordnung bzw. Stelle in der Bildebene, wo der Augenstrahl auf seinem Weg zu dem Blickpunkt kreuzt. Die Gleichung für diesen Punkt ist Gleichung (3). In die andere Richtung gehend, gibt es für Punkte in der Bildebene einen korrespondierenden Punkt im Raum, welcher auf der Ebene des Oberflächenpolygons liegt, wie folgt:
    nvec = N [(x, y, f)] Pt = – (d*nvec)/(N·nvec), (10)wo Pt ein Punkt auf der Polygonoberflächen-Ebene ist, x und y die Koordinaten eines Punkts in der Bildebene sind, N und d die Parameter sind, welche die Polygonoberflächen-Ebene definieren, und f die Brennweite des Kamerasystems ist.
  • Beachte, daß es eine weitere Beschränkung für Gleichung (10) gibt, daß nur Punkte, welche innerhalb der Abgrenzungen der Polygonoberfläche liegen, erlaubt sind.
  • Die Weise, auf welche die äußere Oberfläche eines 3D Modells in Polygone (Facetten) unterteilt wird, hängt von der Gestalt des Objekts ab. Jede Fläche eines rechtwinkeligen Festkörpers wird als eine einzelne rechtwinkelige Facette behandelt, obwohl es möglich wäre, jede Oberfläche des rechtwinkeligen Festkörpers in eine Vielzahl von kleineren rechtwinkeligen Facetten zu unterteilen. Für andere Gestalten bzw. Formen kann die Anzahl der Facetten durch Anwenderpräferenz bzw. -vorliebe ausgewählt werden, abhängig von der gewünschten endgültigen Kurvengenauigkeit, wie dies unten beschrieben werden wird.
  • Ein zylindrischer Festkörper weist die zylindrische Oberfläche in eine bestimmte Anzahl von rechtwinkeligen Facetten unterteilt auf, wobei sich eine jede über die gesamte axiale Dimension bzw. Abmessung des Zylinders erstreckt. Die flache Oberseite und der Boden des Zylinders sind jeweils in eine entsprechende Anzahl von dreieckigen Facetten geteilt. Ein Kegelstumpf wird auf dieselbe Weise unterteilt wie der Zylinder, außer daß die gekrümmte Oberfläche in Facetten aufgeteilt ist, welche eher trapezoid als rechtwinkelig sind, wobei sich jede Facette über die gesamte axiale Dimension bzw. Abmessung des Kegelstumpfs erstreckt.
  • Eine Kugel wird in gleichen Inkrementen bzw. Schrittgrößen von Breite und Höhe unterteilt. Dies resultiert in einem Satz von dreieckigen Facetten an jedem der zwei Pole und einem Satz von verbleibenden Facetten, welche trapezoidförmig sind.
  • Kompliziertere Rotationskörper werden durch obere und untere flache kreisförmige Oberflächen und eine gedrehte Oberfläche definiert, welche ein Profil aufweist, welches anders als eine einzelne gerade Linie ist. Das Profil kann eine Vielzahl von geraden Liniensegmenten sein oder kann wenigstens ein gekrümmtes Segment beinhalten. Jedes gerade Segment in dem Profil definiert einen Abschnitt des Rota tionskörpers, welcher zylindrisch oder kegelstumpfartig ist, und seine Facetten sind rechtwinkelig oder trapezoidförmig, wie dies oben besprochen wurde. Jedes gekrümmte Segment wird an jedem seiner Enden durch das Ende eines geraden Segments des Profils oder durch die Oberseite oder den Boden des Objekts begrenzt. Jedes gekrümmte Segment ist bis zu einer Vielzahl von linearen Segmenten aufgeteilt. Somit erzeugt jedes lineare Segment der Kurve, wenn es gedreht wird, einen Kegelstumpf (oder möglicherweise einen Zylinder), welcher selbst in eine entlang eines Umfangs sich erstreckende Vielzahl von trapezförmigen (oder möglicherweise rechteckigen bzw. rechtwinkeligen) Facetten aufgeteilt ist.
  • Die besondere Information, welche für das 3D Modell gespeichert ist, beinhaltet die Eckpunkte bzw. Scheitel und Normalen für die Polygone, als auch Parameter, die die gekrümmten Profilsegmente charakterisieren. Ein gekrümmtes Segment ist als eine Einzelsegment- oder Mehrfachsegment-Bezier-Kurve gespeichert. Wie oben angemerkt, wird der Normalvektor zu der Polygonoberfläche benötigt, um zu bestimmen, welche Polygone sichtbar sind, wenn sich das Objekt in einer besonderen Orientierung oder in einer besonderen Position befindet. Es würde möglich sein, ebenfalls die Normale auf die gekrümmte Oberfläche zu speichern, wenn dies gewünscht ist.
  • 4. FreeD-Werkzeuge
  • 4.1 Übersicht über Werkzeuge und Betriebsarten
  • Die spezifische Implementierung der Erfindung, ein Programm, welches als FreeD bezeichnet wird, bietet zwei Sor ten von Funktionalität, nämlich die Konstruktion von 3D Modellen aus 2D Bildern und die Manipulation der 3D Modelle. Vorgänge bzw. Tätigkeiten werden bewirkt, indem der Anwender Werkzeuge aufruft. Einige der Werkzeuge werden durch ein Klicken in einem Werkzeug- bzw. Symbolbalken aufgerufen, während einige aufgerufen werden, indem eine Auswahl aus einer Liste von Menüoptionen getroffen wird. Dies sind lediglich zwei von vielen bekannten Anwender-Schnittstellen-Techniken, um es einem Anwender zu erlauben, Vorgänge zu spezifizieren.
  • Ein Symbolbalken bzw. Symbolleiste ist eine Reihe von Symbolen bzw. Piktogrammen bzw. Ikons oder Bildschirmknöpfen bzw. -tasten, wobei ein jeder einen auszuführenden Vorgang kennzeichnet, wenn der Knopf durch den Anwender geklickt wird, um einen Vorgang auszuwählen. Der Knopf und sein assoziierter bzw. zugehöriger Vorgang werden oft als ein Werkzeug bezeichnet, wobei jedoch in der besonderen Ausführungsform die Menüoptionen ebenfalls als Werkzeuge implementiert sind. Einige der Werkzeuge bzw. Tools können entweder durch ein Klicken in eine der Werkzeug- bzw. Symbolleisten oder durch eine Menüauswahl aufgerufen werden.
  • FreeD stellt getrennte Symbolleisten bzw. Werkzeughalter für die Konstruktions- und Manipulations-Betriebsarten auf. Das erste Werkzeug in jeder der Symbolleisten bzw. Werkzeugleisten ist das Werkzeug, um zu dem anderen Modus bzw. der anderen Betriebsart zu gehen. Der augenblickliche bzw. gegenwärtige Modus wird vorzugsweise in der Mitte bzw. dem Zentrum der oberen Linie des Bildschirms angezeigt. Beide Modi erlauben es dem Anwender, die virtuellen Kameraeinstellungen von FreeD einzustellen, um enger mit den Kamera einstellungen übereinzustimmen, welche verwendet wurden, um das Bild zu erzeugen.
  • Zusätzlich zu diesen zwei Hauptbetriebsarten ist FreeD durch eine Anzahl von Unter-Betriebsarten bzw. Sub-Modi charakterisiert. Die meisten der FreeD-Werkzeuge sind modale bzw. Modalwerkzeuge, welche beim Anklicken einen Sub-Modus aufrufen, wobei Cursorereignisse bzw. -vorgänge zu einem Handhaber bzw. Steuerungsprogramm für das Werkzeug gerichtet werden. Ein Modalwerkzeug verbleibt in Kraft, bis ein anderes Werkzeug ausgewählt wird. In den Listen der Werkzeuge, welche in den Abschnitten unten dargelegt werden, wird ein Werkzeug als modal angenommen, außer es ist etwas anders angezeigt. Ein nicht-modales Werkzeug, bewirkt beim Anklicken einen Befehl und führt keine weiteren Tätigkeiten aus, bis es wieder ausgewählt wird.
  • 4.2 Konstruktionsmodus-Vorgänge
  • 9 ist eine Darstellung der Konstruktionsmodus-Symbolleiste, bezeichnet durch das Bezugszeichen 200. Die Werkzeuge, von links nach rechts, sind wie folgt:
    Gehe zum Manipulationsmodus;
    Wähle Objekt aus;
    Vergrößere oder schrumpfe bzw. verkleinere das gesamte Bild (Zoom);
    Entferne bzw. lösche das FreeD-Objekt (nicht-modales Werkzeug);
    Gebiet bzw. Feld des Blickwinkels;
    Mittelpunkt;
    Konstruiere 3D Kasten (nicht-modales Werkzeug);
    Konstruiere 3D Rotationskörper (nicht-modales Werkzeug);
    Konstruiere Kugel (nicht-modales Werkzeug);
    Füge scharfen Ziehpunkt hinzu;
    Füge sanften Ziehpunkt hinzu; und
    Lösche Ziehpunkt.
  • Das Gehe-zu-Manipulationsmodus-Werkzeug schaltet beim Anklicken den Anwender aus einem Konstruktionsmodus und in einen Manipulationsmodus. Der Manipulationsmodus arbeitet nur an Objekten bzw. Gegenständen, welche im Konstruktionsmodus von FreeD erstellt wurden, und deshalb ist der Modus nicht verfügbar, bis der Anwender eines oder mehrere FreeD-Objekte im Konstruktionsmodus skizziert hat.
  • Das Wähle-Objekt-Werkzeug erlaubt es dem Anwender beim Klicken, ein 3D Objekt auszuwählen. Ein Objekt muß ausgewählt sein, bevor der Anwender irgendwelche Vorgänge an ihm durchführen kann. FreeD wählt automatisch das letzte Objekt aus, welches bearbeitet wurde.
  • Das Zoom-Werkzeug erlaubt es dem Anwender beim Anklicken, den Cursor bzw. Eingabezeiger über der zu vergrößernden Fläche zu positionieren. Jeder Klick verdoppelt die Bildgröße. Der Anwender kann das Bild um einen Faktor von zwei schrumpfen, indem er klickt, während eine Modifikatortaste (die "Options"-Taste in einer aktuellen Macintosh-Ausführungsform und die "Alt"-Taste in einer aktuellen Windows-Ausführung) niedergehalten wird. Der Anwender kann auch besondere Vergrößerungswerte als eine Einstellung für Kameraeigenschaften spezifizieren.
  • Das Lösche-FreeD-Objekt-Werkzeug löscht beim Klicken das FreeD-Objekt, welches ausgewählt ist. Das Löschen eines FreeD-Objekts hat keine Auswirkung auf das Originalbild.
  • Das Bildfeld-Winkel-Werkzeug und das Mittelpunkt-Werkzeug erlaubt es beim Anklicken dem Anwender, kleine Bildfeld- oder sehr kleine Mittelpunkt-Einstellungen vorzunehmen, um ein Einpassen des Käfigs über das abgebildete Objekt zu erleichtern.
  • Das Bildfeld- bzw. Gesichtsfeld-Winkel-Werkzeug und das Mittelpunkt-Werkzeug haben keine Auswirkung auf das ursprüngliche bzw. Originalbild, betreffen vielmehr nur 3D Objekte, welche im Konstruktionsmodus skizziert wurden. Deshalb sind das Gesichtsfeld-Winkel- und Mittelpunkts-Werkzeug nicht verfügbar, bis ein FreeD-Objekt skizziert bzw. umrissen wurde. Ihre Betätigung wird in größerem Detail in den folgenden Abschnitten besprochen werden.
  • Das Konstruiere-3D Kasten-Werkzeug erzeugt beim Anklicken einen quadratischen 3D Käfig mit Ziehpunkten, wie oben in dem obigen Abschnitt beschrieben, der grundlegende Anwenderinteraktionen beschreibt. Der Verwender bzw. Anwender erzeugt einen texturabgebildeten 3D Kasten, indem der Käfig bewegt und die Ziehpunkte auf Ecken eines abgebildeten Kastens positioniert werden, um die Kanten des Käfigs mit den Kanten des abgebildeten Kastens auszurichten. Wie oben erwähnt, wird, wenn der Anwender außerstande ist, ein zufriedenstellendes Passen zu erzielen, eine Einstellung des Gesichtsfeldwinkels und Mittelpunkts typischerweise ein zufriedenstellendes Passen bzw. Fitten erlauben.
  • Das Konstruiere-3D Rotationskörper-Werkzeug erstellt bzw. erzeugt einen zylindrischen 3D Käfig beim Anklicken. Die Details der Vorgänge eines Modellierens eines komplizierteren Rotationskörpers werden in einem späteren Abschnitt be schrieben werden. An diesem Punkt ist es der Mühe wert anzumerken, daß der zylindrische Käfig modifiziert werden kann, indem zusätzliche Ziehpunkte entlang der Kanten hinzugefügt werden, um drechselbank- bzw. drehmaschinenähnliche Effekte zu erzeugen (um Gegenstände bzw. Objekte, wie beispielsweise Vasen, Weinflaschen und Lampenschirme zu erzeugen).
  • Das Konstruiere-Kugel-Werkzeug erzeugt beim Anklicken einen kreisförmigen Käfig mit zwei Ziehpunkten.
  • Das Hinzufügen-scharfen-Ziehpunkt-Werkzeug, erlaubt es dem Anwender beim Anklicken, einen scharfen (spitzen) Ziehpunkt zum Erstellen scharfer Extrusionen in den Seiten von Zylindern hinzuzufügen. Der Anwender kann auch dieses Werkzeug verwenden, um einen bestehenden sanften bzw. weichen Ziehpunkt zu einem scharfen Ziehpunkt zu ändern.
  • Das Hinzufügen-weichen-Ziehpunkt-Werkzeug erlaubt es dem Anwender beim Anklicken, einen weichen Ziehpunkt hinzuzufügen, um weiche oder abgerundete Extrusionen in den Seiten von Zylindern hinzuzufügen. Der Anwender kann dieses Werkzeug auch verwenden, um einen existierenden bzw. bestehenden scharfen Ziehpunkt zu einem weichen Ziehpunkt zu ändern.
  • Das Lösche-Ziehpunkt-Werkzeug erlaubt es dem Anwender beim Anklicken, einen scharfen oder weichen Ziehpunkt zu lösen, welcher mit einem der obigen Werkzeuge erstellt wurde.
  • 4.2.1 Einstellen von Kameraparametern
  • Die 2D Fotografien, welche typischerweise die Bilder sind, welche mit FreeD manipuliert bzw. gehandhabt werden, wurden mit spezifischen Kameras aufgenommen, welche an spezifischen Plätzen angeordnet sind, welche auf spezifische Parameter eingestellt sind. Es ist nicht notwendig, diese Information zu kennen, um FreeD zu benützen, jedoch beeinflussen die Kameraeinstellungen, die verwendet wurden, wenn die Originalfotografie aufgenommen wurden, das Bild und können manchmal einen Unterschied in der Fähigkeit des Anwenders machen, den Käfig über ein abgebildetes Objekt einzupassen bzw. zu fitten.
  • Wenn der Anwender die Ziehpunkte auf dem Käfig manipuliert, entsprechen die angezeigten bzw. dargestellten Kanten des Käfigs einem projizierten 3D Modell, basierend auf einem angenommenen Satz von Kameraparametern (FreeD's virtuelle Kamera). Jegliche Schwierigkeit, die der Anwender beim Einpassen eines rechtwinkeligen Käfigs auf ein abgebildetes rechtwinkeliges Objekt erfährt, können aus der Tatsache resultieren, daß die Fotografie mit unterschiedlichen Kameraparametern aufgenommen wurde, als sie intern durch FreeD vorausgesetzt bzw. angenommen werden. In dem Ausmaß, in dem sich der Anwender der Kameraparameter bewußt ist, welche verwendet wurden, wenn das Bild aufgenommen wurde, können diese eingegeben werden. Anderenfalls kann der Anwender kleine Einstellungen an den Kameraparametern unter Verwendung des Bildfeld- und Mittelpunkt-Werkzeugs vornehmen.
  • 4.2.1 1 Bildfeld- bzw. Gesichtsfeldwinkel
  • Das Bildfeldwinkel-Werkzeug veranlaßt den Cursor beim Anklicken, das allgemeine Aussehen des Werkzeugs anzunehmen und der Anwender kann den Bildfeldwinkel auswählen, indem er den Cursor aufwärts oder abwärts zieht. Der Anwender kann den Default- bzw. Vorgabe-Bildfeldwinkel in den allgemeinen Präferenzen von FreeD spezifizieren und kann einen bestimmten Bildfeldwinkel für ein bestimmtes Bild in den Eigenschaften des Bilds spezifizieren.
  • Durch den Hintergrund hat ein menschliches Auge ein Bildfeld von ungefähr 48 Grad, was ungefähr einer 58 mm-Linse für eine 35 mm Kamera entspricht. Wie dies gut bekannt ist, liefert eine 28 mm Weitwinkellinse auf einer 35 mm Kamera ein relativ breites Feld eines Blickwinkels von ungefähr 75 Grad, während eine 200 mm Teleobjektivlinse einen schmalen Blickwinkel von ungefähr 12,2 Grad liefert bzw. zur Verfügung stellt.
  • 4.2.1.2 Mittelpunkt
  • Das Mittelpunkt-Werkzeug veranlaßt den Cursor beim Anklicken, die allgemeine Erscheinung des Werkzeugs anzunehmen und der Anwender kann den Punkt durch ein Ziehen des Cursors in der geeigneten Richtung auswählen.
  • Eine Fotografie ist flach 2D, jedoch interpretiert das menschliche Auge trotzdem die abgebildeten Objekte in einem 2D Bild, als wiese es 3D Eigenschaften auf. Beispielsweise kann ein Objekt scheinen, sich hinter einem anderen zu befinden. Fotographen ordnen üblicherweise ihre Bilder mit sorgfältiger Überlegung an, so daß sich das Zentrum des Bilds dort befindet, wo der Fotograph es wünscht. Die Anordnung des Zentrums, manchmal der Durchstoßpunkt oder Richt- bzw. Zielpunkt genannt, beeinflußt eine visuelle Interpretation der Größen und Orientierungen von peripheren Objekten von jemandem. Ein beschnittenes bzw. gestutztes Bild muß nicht denselben Mittelpunkt aufweisen wie das ursprüngliche bzw. Originalbild.
  • FreeD setzt standardmäßig voraus, daß das Zentrum bzw. der Mittelpunkt des Bilds das Zentrum ist, welches den beabsichtigten Sinn ergibt. Jedoch ist, wenn das Bild ein beschnittenes Bild war, der angenommene Mittelpunkt nicht der Mittelpunkt bei dem Originalbild. Vorausgesetzt, daß die zugrunde liegenden Berechnungen einen Mittelpunkt annehmen (Position, wo die optische Achse der Linse die Bildebene schneidet), kann der Anwender Schwierigkeiten haben, den Käfig auf ein abgebildetes Objekt einzupassen, wenn der Mittelpunkt nicht dort ist, wo von ihm angenommen wird, daß er ist.
  • 4.3 Manipulationsmodus-Vorgänge
  • 10 ist eine Darstellung der Manipulationsmodus-Werkzeugleiste bzw. -Symbolleiste, welche durch das Bezugszeichen 205 bezeichnet ist. Es gibt keine spezifische Auswahl im Manipulationsmodus, da ein Auswählen eines Objekts im Manipulationsmodus erreicht wird, indem einer der spezialisierten Cursor über dem Objekt angeordnet wird. Was immer zuletzt im Konstruktionsmodus ausgewählt war, ist üblicherweise ohne Bedeutung im Manipulationsmodus. Die Werkzeuge, von links nach rechts, sind wie folgt:
    Gehe zum Konstruktionsmodus;
    Vergrößere oder verkleinere gesamtes Bild (Zoom)*;
    Drehe Objekt;
    Bewege Objekt;
    Rücksetzen auf Ausgangswerte (nicht-modales Werkzeug);
    Bildfeldwinkel*;
    Umkreise die Szene;
    Bewege (Kamerawagen) Kamera; und
    Schiebe Kamera
  • Das Gehe-zum-Konstruktionsmodus-Werkzeug schaltet beim Anklicken den Anwender aus dem Manipulationsmodus in den Konstruktionsmodus. Die mit einem Asterisk bzw. Sternchen (*) markierten Werkzeuge weisen grundsätzlich denselben Vorgang im Manipulationsmodus auf wie im Konstruktionsmodus, und werden deshalb nicht weiter beschrieben werden.
  • Das Drehe- bzw. Rotiere-Objekt-Werkzeug erlaubt es dem Anwender beim Anklicken, den Cursor über einem FreeD-Objekt zu positionieren und das Objekt in drei Dimensionen zu drehen bzw. rotieren, indem der Cursor in einem kleinen kreisförmigen Muster bewegt wird. Das Objekt kann in jeder Richtung gedreht werden, einschließlich Ende über Ende.
  • Das Bewege-Objekt-Werkzeug erlaubt es dem Anwender beim Anklicken, den Cursor über einem FreeD-Objekt zu positionieren, und das Objekt in einer einzigen Ebene durch ein Ziehen des Cursors zu bewegen. Um das Objekt hinein und hinaus zu bewegen, wird Gebrauch von dem Bewege-(Kamerawagen)-Kamera-Werkzeug gemacht, welches unten beschrieben wird. Das Bewege-Objekt-Werkzeug bewegt nur ein ausgewähltes Objekt. Wenn es mehrere FreeD-Objekte gibt, welche gleichzeitig bewegt werden sollen, sollte das Umkreise-die-Szene- oder Schiebe-Kamera-Werkzeug verwendet werden.
  • Das Rücksetzen-auf-Ausgangswerte-Werkzeug (a) führt beim Anklicken das Bild zu der Art zurück, wie es war, wenn der Manipulationsmodus betreten wurde, (b) setzt die Kameraeinstellungen für die Manipulationsmodus-Kamera zurück, um mit den gegenwärtigen Konstruktionsmodus-Kameraeinstellungen übereinzustimmen, und (c) widerruft bzw. nimmt alle Effekte eines Bewegens der Manipulationsmodus-Kamera und eines Bewegens und Drehens der FreeD-Objekte zurück.
  • Das Umkreise-die-Szene-Werkzeug, das Bewege-(Kamerawagen)-Kamera-Werkzeug und das Schiebe-Kamera-Werkzeug erlauben es dem Anwender beim Anklicken, die effektive Kameraposition in bezug auf die FreeD-Objekte in der Szene zu ändern. Diese FreeD-Kamerabewegungs-Werkzeuge arbeiten auf allen FreeD-Objekten, welche in der Szene konstruiert wurden, im Gegensatz zu den Bewege- und Drehe-Werkzeugen, welche nur auf einem ausgewählten FreeD-Objekt arbeiten bzw. wirken.
  • 4.3.1 Kamerabewegung
  • 11 zeigt die Kamerabewegungen, welche durch die Umkreise-die-Szene-, Bewege-(Kamerawagen)-Kamera-, und Schiebe-Kamera-Werkzeuge aufgerufen wurden. Die virtuelle Kamera von FreeD wird durch das Bezugszeichen 210 bezeichnet.
  • Das Umkreise-die-Szene-Werkzeug erlaubt es dem Anwender, ein physikalisches Herumbewegen der Kamera zu simulieren, d. h. alle abgebildeten FreeD-Objekte zu umkreisen. Das Werkzeug arbeitet nur an FreeD-Objekten, da diese das einzige Objekt sind, worüber FreeD Information besitzt. Es ist möglich, aufwärts, abwärts oder seitlich zu umkreisen. Ein Abstand zwischen der Kamera und den FreeD-Objekten ändert sich nicht. Der visuelle Effekt eines Verwendens des Umkreise-die-Szene-Werkzeugs ist wie jener eines Verwendens des Drehe-Objekt-Werkzeugs, jedoch gleichzeitig auf alle FreeD-Objekte in der Szene angewendet.
  • Das Bewege-(Kamerawagen)-Kamera-Werkzeug erlaubt es beim Anklicken dem Anwender, die Kamera wie eine Kamerawagen-Kameraeinstellung zu bewegen (d. h. näher oder weiter von dem FreeD-Objekt). Es bewegt die Kamera nur in bezug auf die FreeD-Objekte; der Rest der Fotografie wird nicht beeinflußt. Zum Näherbewegen zieht der Anwender nach oben; um sich weiter weg zu bewegen, zieht der Anwender nach unten. Der visuelle Effekt des Bewege-(Kamerawagen)-Kamera-Werkzeugs ist ein wenig ähnlich dem Vergrößerungs-Werkzeug, außer daß das Bewege-(Kamerawagen)-Kamera-Werkzeug nur FreeD-Objekte beeinflußt, während das Vergrößerungs-Werkzeug die gesamte Fotografie beeinflußt.
  • Der visuelle Effekt eines Bewegens der FreeD-Kamera unter Verwendung des Bewege-(Kamerawagen)-Kamera-Werkzeugs ist ein wenig ähnlich einem Ändern des Blickfeld-Winkels durch ein Verwenden des Blickfeld-Winkel-Werkzeugs in dem Sinn, daß in beiden Fällen die Objekte größer oder kleiner erscheinen. Jedoch ändert das Bewege-(Kamerawagen)-Kamera-Werkzeug nicht die Gestalt bzw. Form des FreeD-Objekts, während ein Ändern des Bildfeld-Winkels das FreeD-Objekt verzerrt (etwas seine Gestalt verändert), zusätzlich zu einem Vergrößern oder Verkleinern desselben. In fotografischen Ausdrücken simuliert ein Verwenden des Bewege-(Kamerawagen)-Kamera-Werkzeug ein physikalisches Bewegen der Kamera, während ein Verwenden des Bildfeld-Winkel-Werkzeugs ein Ändern der Brennweite der Linse simuliert.
  • Das Schiebe-Kamera-Werkzeug erlaubt es dem Anwender beim Anklicken, die FreeD-Kamera in irgendeiner Berichtung in der Ebene rechtwinkelig zu der Kamerarichtung zu bewegen, indem in der gewünschten Richtung gezogen wird.
  • 4.4 Cursoraussehen
  • In vielen Fällen veranlaßt ein Anklicken des Cursors, bei einem nachfolgenden Bewegen über den Arbeitsbereich sein Aussehen zu verändern, um jenem der Graphik auf dem Werkzeug zu ähneln. Dies hilft dem Anwender sich daran zu erinnern, welches Werkzeug zuallerletzt ausgewählt wurde. Darüber hinaus kann der Cursor sein Aussehen erneut ändern, wenn er über verschiedene Objekte positioniert wird, wie beispielsweise Ziehpunkten oder Käfigkanten in dem Arbeitsbereich. Dies stellt einen weiteren Hinweis zur Verfügung, daß ein bestimmter Vorgang resultieren wird, wenn der Anwender den Mausknopf anklickt. 12 stellt eine Tabelle dar, welche das Cursoraussehen zeigt, wenn verschiedene Werkzeuge ausgewählt sind bzw. werden.
  • 5. FreeD-Menüs
  • Die Menüleiste für Macintosh- und Windows-Version von FreeD beinhaltet Datei- und Edit- bzw. Bearbeitungs-Menüs. Die Funktionalität ist grundsätzlich in beiden Versionen dieselbe. Zur Bestimmtheit werden die Macintosh-Menüs beschrieben werden. Zusätzlich zu den Datei- und Bearbeitungs-Menüs weist die Macintosh-Version das Apple-Logo-Menü auf, wie auch die Macintosh spezifischen Hilfe- und Anwendungsmenüs ganz rechts außen. Wie dies gut bekannt ist, beinhaltet das Apple-Logo-Menü eine Eingabe, welche es dem Anwender erlaubt, auf dem Bildschirm "Über FreeD" zuzugreifen, wie auch nicht anwendungsspezifische Eingaben (in allen Anwendungen vorhanden). Ein Auswählen von "Über FreeD" gibt allgemeine Information betreffend die Autorenschaft von FreeD. Es erzeugt dieselbe Anzeige wie FreeD "Splash Screen bzw. Startbild", welcher(s) angezeigt wird, wenn der "Über Plug-ins bzw. Über Hilfsprogramme"-Menübefehl von Photoshop aufgerufen wird und "FreeD" ausgewählt wird.
  • 5.1 Menüleiste: Dateioptionen
  • Ein Klicken auf Datei bzw. File bringt ein Pull-Down-Menü bzw. Aktionsmenü mit drei Optionen hervor:
    OK
    Cancel bzw. Abbrechen
    Export
  • OK (Rendere zurück zu Photoshop) rendert letztlich das Bild, welches im Manipulationsmodus bei voller Auflösung konstruiert wurde, und schreibt es zurück in Photoshop. Beachte, daß das Objekt erneut abgeflacht bzw. reduziert ist (rückgeführt auf 2D), wenn es sich zurück im Photoshop befindet; es ist nur in FreeD 3D. Sobald das Bild zu Photoshop zurückgekehrt ist, zeigt die Fotostop-Statuslinie an "Filter: FreeD", welches sich zunehmend verdunkelt, wenn der Vorgang fortschreitet. OK in dem Edit- bzw. Bearbeitungs-Menü auszuwählen, ist der einzige Weg, um das ursprüngliche Photoshop-Bild von FreeD zu modifizieren.
  • Abbrechen bricht vollständig diesen Aufruf von FreeD ab bzw. löscht ihn. Keine Objekte bzw. Gegenstände oder Manipulationen werden gespeichert und das Photoshop-Bild ist nicht modifiziert.
  • Export erlaubt es dem Anwender, eine VRML (virtuelle Realität modellierende Sprache) Datei zu konstruieren, welche die Gegenstände bzw. Objekte darstellt, welche mit FreeD konstruiert wurden. VRML-Dateien bzw. -Files können mit einem VRML-fähigen World Wide Web-Browser verwendet werden.
  • 5.2 Menüleiste: Edit- bzw. Bearbeitungs-Optionen
  • Ein Klicken auf Edit bzw. Bearbeiten bringt ein Pull-Down-Menü bzw. Klappfenster mit fünf Optionen hervor:
    Undo bzw. rückgängig machen;
    Redo bzw. nochmals tun;
    Camera bzw. Kamera;
    Objekt; und
    Präferenzen bzw. Vorzüge.
  • 5.2.1 Undo, Redo
  • Undo macht den (die) vorangegangenen Vorgang (Vorgänge) rückgängig. Standardmäßig wird es bis zu 20 Vorgänge rückgängig machen. Eine gewünschte Anzahl von Pegeln bzw. Niveaus von 1 bis 1000 inklusive kann in den Präferenzen eingestellt werden. Redo macht das vorhergehende Undo rückgängig. Alle Undo-Einstellungen passen bzw. gelten.
  • 5.2.2 Kameraeigenschaften
  • Die FreeD-Bildschirme im Konstruktionsmodus und Manipulationsmodus sind Bilder, welche den Parametern entsprechen, welche FreeD's virtuelle Kamera charakterisieren. Der Anwender kann die Einstellung von diesen Kameras "on the fly" bzw. "während der Übertragung" bzw. "während des Vorgangs" modifizieren. Die Konstruktionsmodus- und Manipulationsmodus-Werkzeugleisten beinhalten Werkzeuge, um den Bildfeldwinkel, Grad einer Vergrößerung, und Mittelpunkt, getrennt für jede Ansicht zu regeln bzw. steuern. Zusätzlich läßt die Kameraoption des Edit- bzw. Bearbeitungsmenüs den Anwender das gesamte Hintergrund (2D) Bild anzeigen oder ausblenden. Die Vorgabe bzw. Voreinstellung weist das Hintergrundbild sichtbar auf.
  • 5.2.3 Objekteigenschaften
  • Jedes Objekt (Kasten, Kugel, Rotationskörper), welches unter Verwendung von FreeD konstruiert wurde, kann zwei Eigenschaften aufweisen: Name und Show Ghost bzw. Benenne und Zeige Geist. Der Anwender wählt das Objekt im Konstruktionsmodus aus und wählt die Objekt-Option. Dies bringt einen Dialogkasten bzw. eine Dialogbox hervor, welche es dem Anwender erlaubt, die voreingestellten Benenne-und-Zeige-Geisterbild-Eigenschaften zu ändern.
  • FreeD gibt den Objekten voreingestellte Namen: box 0 für den ersten Kasten, box 1 für den zweiten Kasten, sphere 0 für die erste Kugel, cylinder 0 für den ersten Rotationskörper, usw. Die Default- bzw. Vorgabenamen können durch ein Ändern einer Namen-Eigenschaft eines Objekts geändert werden. Die zugewiesenen Namen können von jeder gewünschten Länge sein und können Räume bzw. Zwischenräume beinhalten. Dieses Merkmal ist besonders nützlich, wenn mehrere FreeD-Objekte in einem einzelnen Bild erzeugt bzw. erstellt werden; beispielsweise unterscheiden "linksgängigen Kasten" und "rechtsgängigen Kasten". Um ein Objekt zu VRML zu exportieren, kann es notwendig sein, seinen Namen zu kennen.
  • Eine Zeige-Geist-Eigenschaft eines Objekts spezifiziert, ob der "Geist" bzw. das "Geisterbild" des Objekts gezeigt werden wird, wenn das Objekt von seiner Ausgangsanordnung oder ursprünglichen Orientierung bewegt wird. Das Geisterbild ist die Gestalt des ursprünglichen 2D Objekts, welche in grau gerendert bzw. wiedergegeben ist. Die vorgegebene bzw. Vorgabe-Objekt-Eigenschaft und Präferenz ist nicht, das Geisterbild zu zeigen; d. h., damit fortzufahren, jedes ursprüngliche bzw. Originalobjekt zu zeigen. Um das Geisterbild anstelle eines spezifischen FreeD-Objekts zu zeigen, sollte die Zeige-Geist-Box in dem Dialogkasten überprüft werden. (In der Windows-Version kann das Zeige Geist auch als eine Ansichtspräferenz für alle neuen FreeD Objekte eingestellt sein, welche konstruiert wurden). Der Effekt dieser Option ist nur im Manipulationsmodus sichtbar, obwohl die Option entweder im Konstruktions- oder im Manipulationsmodus eingestellt sein kann.
  • 5.2.4 Präferenzen
  • Präferenzen sind FreeD Voreinstellungen bzw. Vorgaben. Sie gelten für alle neuen Objekte, welche konstruiert werden. Wenn Präferenzen verändert werden, nachdem einige FreeD Objekte konstruiert wurden, behalten die alten Objekte die alten Präferenzen bei. Neue Präferenzen wirken sich das nächste Mal aus, wenn FreeD ausgeführt wird, so daß, wenn diese sofort gewünscht werden, sofort rückgesetzt werden sollten und FreeD neu gestartet werden sollte. Ein Anklicken von Präferenzen erzeugt ein hierarchisches Pull-Down-Menü mit fünf Optionen:
    Allgemein;
    Objekt;
    Ansicht;
    Rendern; und
    VRML.
  • 5.2.4.1 Allgemein und Objekt-Präferenzen
  • Gegenwärtig gibt es eine Allgemein-Präferenz, die Anzahl von Undos bzw. Rückgängigmachungen. Der Anwender kann den Vorgabewert (20) für die Anzahl von Undos und Redos auf jede beliebige Anzahl von 1 bis einschließlich 1000 ändern. Es gibt augenblicklich einen Objekt-Präferenz: "Zeige immer" oder "Verstecke das Geisterbild" für jedes FreeD Objekt, welches erzeugt wird.
  • 5.2.4.2 Ansichts-Präferenzen
  • Drei View- bzw. Ansichts-Präferenzen können spezifiziert werden: (1) Default- bzw. Vorgabe-Bildfeldwinkel; (2) Kurventreue von allen FreeD Ansichtsbildern; und (3) Hintergrundbild immer (un)sichtbar. Diese bestimmen, wie FreeD Objekte erscheinen bzw. aussehen, wenn der Anwender mit FreeD arbeitet. Sie beeinflussen nicht, wie FreeD Objekte endgültig gerendert werden, um zurück zu Photoshop ausgegeben zu werden. Es ist jedoch möglich, die Render-Präferenzen, wie oben angeführt und unten weiter diskutiert, einzustellen.
  • Der Vorgabe-Bildfeldwinkel kann als eine Präferenz sowohl für Konstruktionsmodus- und Manipulationsmodus-Ansichtskameras eingestellt werden. Der Bildfeldwinkel wurde im Detail oben in Verbindung mit der Beschreibung der Bildfeldwinkel-Werkzeuge beschrieben.
  • Die Kurventreue von allen FreeD Ansichtsbildern bezieht sich auf die Anzahl von diskreten Liniensegmenten, welche FreeD verwendet, um gekrümmte Linien auf Kugeln oder glatten Zylinderkanten in der FreeD Anzeige zu zeichnen. Je mehr Liniensegmente, umso glatter aussehend ist die Kurve bzw. Krümmung. Der Anwender kann Hoch (am glattesten), Mittel (etwas glatt) oder Niedrig (am wenigsten glatt) auswählen. Je höher die Kurventreue ist, umso langsamer ist das Programm. Die getriebene Vorgabe ist Niedrig, wie es der Absicht geziemt, den Betrieb zu beschleunigen.
  • In der spezifischen Implementierung ist bzw. wird eine zylindrische Oberfläche in 16, 24 oder 32 rechtwinkelige oder trapezoidförmige Polygone unterteilt, abhängig davon, ob der Anwender niedrig, mittel oder hoch für die Kurventreue aller FreeD Ansichtsbilder als eine Ansichtspräferenz ausgewählt hat. In ähnlicher Weise stimmen diese Anzahlen von Segmenten mit den Anzahlen von Segmenten der Länge nach überein, in welche eine Kugel aufgeteilt wird. Da die winkelige Ausdehnung bzw. das Winkelausmaß des Breitengrads einer Kugel nur eine Hälfte eines Kreises beträgt, wird die Kugel in 8, 12 oder 16 horizontale Scheiben bzw. Stücke bei gleichen Schrittweiten des Breitengrads aufgeteilt, abhängig von der Auswahl der Kurventreue von allen FreeD Ansichtsbildern des Anwenders. Für komplexere Rotationskörper, wo wenigstens der Abschnitt der Oberfläche durch ein Profil charakterisiert ist, welches als eine Einzelsegment- oder Multisegment-Bezier-Kurve gespeichert wird, wird die Kurve in 8, 16 oder 32 Segmente aufgebrochen, abhängig von der Auswahl der Kurventreue von allen FreeD Ansichtsbildern des Anwenders.
  • Die Hintergrundbild-Immer-(Un)-Sichtbar-Präferenz kann eingestellt werden, um zu spezifizieren, ob das Hintergrundbild sichtbar sein soll oder nicht. Die Voreinstellung ist, den Hintergrund zu zeigen (der Kasten wird überprüft bzw. schraffiert). Ein Entfernen der Überprüfung in dem Kasten stellt den Hintergrund auf nicht sichtbar ein. Es ist möglich, das Hintergrundbild nur für ein spezifisches FreeD Objekt sichtbar zu machen, indem Hintergrundbild (un)sichtbar für dieses Bild unter Kamera bzw. Camera in dem File- bzw. Datei-Menü eingestellt wird.
  • 5.2.4.3 Render-Präferenzen
  • Die Render-Präferenzen bestimmen, wie ein FreeD Objekt schließlich für eine Anordnung zurück in das Originalbild in Photoshop gerendert wird. Der Anwender kann zwei Wiedergabe- bzw. Render-Präferenzen spezifizieren: (1) Anti-Aliasing bzw. Bildkantenglättung aller gerenderten Bilder; und (2) Kurventreue aller gerenderter Bilder.
  • Die Bildkanten- bzw. Treppeneffektglättung aller gerenderter Bilder kann auf drei Stufen einer Bildkantenglättung spezifiziert werden: keine, mittel, oder hoch. Wenn die Bildkantenglättung auf "keine" eingestellt ist, erscheinen Kanten bzw. Ränder, besonders auf diagonalen und gekrümmten Linien, gezackter bzw. schroffer, ähnlich zu Treppenstufen. Eine Bildkantenglättung verwischt die Pixel bzw. Bildpunkte entlang der Kanten, um die Kanten glatter erscheinen zu lassen. Die Effekte einer Bildkantenglättung können in Photoshop sehr klar gesehen werden, indem eine diagonale Linie mit und ohne Bildkantenglättung vergrößert und betrachtet wird. Je mehr Bildkantenglättung, umso länger braucht es, um das Bild endgültig zu rendern.
  • Kurventreue aller gerenderter Bilder spezifiziert die Anzahl von diskreten Liniensegmenten, welche FreeD verwendet, um gekrümmte Linien auf Kugeln oder glatten Zylinderkanten in dem FreeD Bild zu zeichnen, wenn es endgültig gerendert wird. Je mehr Liniensegmente, umso glatter aussehend ist die Kurve bzw. Krümmung. Der Anwender kann Hoch (am glättesten), Mittel (etwas glatt) oder Niedrig (am wenigsten glatt) auswählen. Der ausgelieferte Vorgabewert ist Niedrig. Je höher die Kurventreue ist, umso länger braucht es, um das Bild zurück zu Photoshop zu rendern. In der spezifischen Implementierung beträgt die Anzahl von Segmenten für eine vorgegebene ausgewählte Kurventreue von allen gerenderten Bildern in den Render-Präferenzen das Doppelte der Anzahl von Segmenten für die entsprechend ausgewählte Kurventreue aller FreeD Ansichtsbilder in den Ansichts-Präferenzen.
  • 5.2.4.4 VRML-Präferenzen
  • Die VRML-Präferenz bestimmt den FreeD-Dateibefehlexport. VRML ist ein Dateiformat zum Darstellen von 3D Objekten (wie beispielsweise FreeD Objekten) zur Verwendung im World Wide Web. Ein Exportieren eines FreeD Objekts instruiert bzw. weist FreeD an, eine VRML-Typ-Datei zu konstruieren. Das VRML-Format beschreibt das zu exportierende Objekt. Ein Teil der VRML-Beschreibung ist eine Spezifikation der Form bzw. Gestalt des Objekts (z. B. ein Kasten); ein anderes Teil der VRML-Beschreibung ist eine Spezifikation der Anordnung des Bilds, um die Gestalt anzunehmen (die Texturkarte des Objekts, z. B. "leuchtend blau"). FreeD stellt die VRML-Beschreibung der Form des Objekts zur Verfügung. Der Anwender muß spezifizieren, wo die Texturkarte angeordnet ist. URL (Uniform Resource Locator bzw. Internetadresse) ist die Standardweise, um die Anordnung von WWW-Dateien zu identifizieren, so daß VRML die Spezifikation der Texturkarte im URL-Format benötigt.
  • 6. Rendern des 3D Modells
  • 6.1 Manipulationsmodus-Rendern
  • Es gibt zwei Fälle, wo FreeD's internes 3D Modell auf dem Bildschirm gerendert wird: (1) im Manipulationsmodus, wenn der Anwender die Position oder Orientierung eines 3D Objekts oder die Position, die Orientierung oder den Bildfeldwinkel der Kamera ändert; und (2), wenn der Anwender den "OK"-Menübefehl aus dem File- bzw. Dateimenü auswählt.
  • Wie oben erwähnt, zeigt FreeD, während es arbeitet, eine niedrig auflösende Graustufenversion des Originalbilds, wie es durch Vorgänge im Manipulationsmodus modifiziert wurde. Das 3D Modell ist bzw. wird in dieser niedrigen Auflösung mit einer Kurventreue gerendert, welche als eine der Ansichtspräferenzen spezifiziert ist. Wenn der Anwender "OK" auswählt, wird das Originalbild in Übereinstimmung mit den Veränderungen geändert, welche an dem Konstruktionsmodus-Bild während des Betriebs von FreeD im Manipulationsmodus bewirkt wurden. D. h., das Modell wird zu der Auflösung und Bit-Tiefe (Anzahl von Farben) des Originalbilds, mit einer Bildglättung und Kurventreue gerendert, wie dies in den Render-Präferenzen spezifiziert ist, und relevante Abschnitte bzw. Bereiche des Originalbilds werden dann überschrieben.
  • Wenn eine andere Verwenderhandlung im Manipulationsmodus FreeD dazu veranlaßt, die Szene zu rendern, wird zuerst eine Überprüfung vorgenommen, um zu sehen, ob dies das erste Rendern ist oder ob der Anwender die Kurventreue von allen FreeD Ansichtsbildern in den Ansichts-Präferenzen geändert hat. Wenn dem so ist, wird ein neues polygonales Modell aus dem internen mathematischen Modell erstellt. Als nächstes werden alle Polygone, welche den Test von Gleichung (9) durchlaufen, gerendert.
  • 8, welche oben in den Sektionen 3.8 und 3.9 diskutiert wurde, welche sich mit Aufzeichnungen zwischen der Bildebene und sichtbaren Oberflächen des 3D Modells befassen, stellt eine nützliche Referenz für die folgende Diskussion zur Verfügung. Die Figur stellt die geometrischen Beziehungen dar, welche sowohl für einen Konstruktions- wie auch Manipulationsmodus gelten. Im Konstruktionsmodus wurde das niedrig auflösende Eingabebild bzw. Eingabebild niedriger Auflösung verwendet, um eine Position, Orientierung und Proportionen für das Objekt (einen Kasten) zu erhalten. Die Position und Orientierung des Objekts definieren eine Aufzeichnung bzw. Abbildung zwischen Punkten in der Bildebene und Punkten auf sichtbaren Oberflächen des Kastens im 3D Raum.
  • Wenn das Objekt bewegt, gedreht wird, oder die Kameraparameter im Manipulationsmodus geändert hat, bilden sich die entsprechenden Punkte auf den Polygonoberflächen (in dem Ausmaß, in dem die Oberflächen sichtbar bleiben) zu unterschiedlichen Punkten in der Bildebene ab. Um zu bestimmen, daß das neue Bild im Manipulationsmodus angezeigt werden soll, muß die Farbe von jedem Pixel in der Bildebene bestimmt werden. Dies wird wie folgt vorgenommen.
  • Für jedes Pixel bzw. jeden Bildpunkt in der Bildebene wird ein Strahl durch den Blickpunkt 0 und das Pixel bzw. den Bildpunkt gezeichnet. Wenn dieser Strahl eine der sichtbaren Polygonoberflächen des Kastens schneidet, dann wird die Farbe des Pixels in der Bildebene auf die Farbe des Objekts an diesem Punkt auf der sichtbaren Polygonoberfläche eingestellt. Anders gesagt, eine Texturkarte, welche mit dem Polygon assoziiert ist, definiert die Farbe des Pixels in der Bildebene. Dies macht es notwendig, daß die Farbe an unterschiedlichen Positionen auf der Polygonoberfläche bestimmt worden ist oder während des Vorgangs bestimmbar ist.
  • Eine mögliche Weise dies vorzunehmen ist, eine Texturkarte für jede der Polygonoberflächen basierend auf den Abschnitten des Konstruktionsmodus-Bilds zu erstellen, welches auf den Polygonoberflächen abgebildet ist. Dies würde eigentlich die Abschnitte des Bilds entzerren, um jede Polygonoberfläche darzustellen, als ob die Polygonoberfläche unter 90 Grad (d. h. direkt von vorne) betrachtet würde. Diese Texturkarten könnten dann an den Polygonoberflächen des 3D Modells angewendet werden. Wenn die Polygonoberflächen des Gegenstands neue Orientierungen im Manipulationsmodus eingenommen haben, würden diese unter Verwendung von Standardtechniken gerendert werden. Diese Annäherung kann als eine erste Entzerrung der Rohtexturen von dem Konstruktionsmodus-Bild gesehen werden, um für die ursprünglichen Projektions-Parameter verantwortlich zu sein, und dann die entzerrten Texturen auf eine Weise zu verzerren, welche die neuen Projektionsparameter (d. h. die neuen Ausrichtungen und Positionen der Polygonoberflächen nach Vorgängen im Manipulationsmodus) aufnimmt.
  • Jedoch werden in der bevorzugten spezifischen Implementierung die Farben auf den Oberflächen nicht als getrennte Texturkarten gespeichert. Vielmehr werden die Manipulationsmodus-Pixelwerte aus dem Konstruktionsmodus-Bild und der 3D Geometrieinformation bestimmt, die als ein Ergebnis von Vorgängen im Konstruktionsmodus erhalten wird. Besonders wird, wenn der Strahl durch das zu färbende Pixel im Manipulationsmodus die Polygonoberfläche an einem bestimmten Punkt auf dem Objekt schneidet bzw. kreuzt, derselbe Punkt auf dem Objekt, jedoch mit dem Objekt in seiner ursprünglichen bzw. Originalposition (wie während des Konstruktionsmodus bestimmt) zurück zum Blickpunkt projiziert. Der Strahl von dem Punkt auf dem Objekt in seiner ursprünglichen bestimmten Position zurück zu dem Blickpunkt schneidet die Bildebene an einer Stelle, deren Farbe die gewünschte Farbe für das zu färbende Pixel ist.
  • Das Konstruktionsmodus-Bild ist eine graustufen-unterabgetastete Version des Originaleingabe-Bilds von Photoshop. Üblicherweise schneidet der Schnittpunkt des Strahls von dem Polygon zu dem Blickpunkt bzw. Ansichtspunkt nicht die Bildebene genau durch die Mitte eines Pixels. Um interaktive Umzeichnungs-Geschwindigkeiten im Manipulationsmodus aufrecht zu erhalten, wird das nächstgelegene Pixel zu dem Schnittpunkt verwendet (eher als eine Interpolation aller benachbarten Pixel).
  • Diese Technik ist nicht wie texturabgebildete Polygonrenderschemata nach Industriestandard dahingehend, daß sie die perspektivische Verkürzung berücksichtigt, welche der Weise inhärent ist, in welcher das Konstruktionsmodus-Bild gebildet wurde. Dies nicht zu berücksichtigen, würde eine sicht bare Verzerrung von Oberflächen verursachen, welche große Tiefenbereiche in dem Konstruktionsmodus-Bild umspannen.
  • 6.2 Abschließendes Rendern
  • Es gibt mehrere Unterschiede des Verfahrens, welches zum Rendern des Abschlußbilds verwendet wird, welches zu Photoshop zurückgegeben werden wird, wenn der Anwender den "OK"-Menüpunkt auswählt.
  • Erstens gibt es einen Abschlußrenderungs-Treueparameter, welcher verwendet wird, um die Anzahl von Polygonen zu bestimmen, welche verwendet wird, um die Abschlußszene zu rendern. Dieser Parameter wird zusammen mit dem internen mathematischen Modell des Objekts verwendet, um eine Sammlung von Polygonen zu erstellen, welche eine endgültige Darstellung bzw. Repräsentation des Objekts bilden. Da die Wiedergabetreue üblicherweise während der abschließenden bzw. Abschlußrenderungs-Stufe wichtiger ist, werden häufig beträchtlich mehr Polygone in dem Abschlußrenderungs-Vorgang erzeugt bzw. generiert.
  • Zweitens ist der Wert der Farbe, welche für jedes Ergebnispixel verwendet wird, eine lineare Interpolation der nächsten bzw. nächstgelegenen vier Pixel in dem Texturbild. Dies ergibt eine genauere Repräsentation der Farbe als die im Manipulationsmodus verwendete Technik des nächsten Nachbarn.
  • Drittens wird das Farbbild in Originalauflösung aus Photoshop verwendet, um Texturdaten für das endgültige Bild zu erhalten, und das resultierende Bild wird bei derselben Auflösung wie das Originalbild gerendert.
  • Diese Faktoren verbinden sich üblicherweise, um das abschließende Rendern zu einem viel längeren Vorgang zu machen als das Manipulationsmodus-Rendern. Während des Abschlußrenderungs-Vorgangs zeigt Photoshop eine Fortschrittanzeige für den Anwender an, basierend auf Daten, welche durch FreeD geliefert werden, während es das abschließende Rendern durchführt.
  • 7. Zusätzliche Techniken
  • 7.1. Erzeugen eines Zylinders
  • 13A repräsentiert ein 2D Bild eines 3D Zylinders 220 in einer 3D Szene, welche durch ein zufälliges Szenenfragment 225 vorgeschlagen wird. Die Figur repräsentiert den Bildschirm, nachdem der Anwender auf das Konstruiere-3D-Rotationskörper-Werkzeug geklickt hat, um so einen zylindrischen 3D Käfig 230 auf den Bildschirm zu bringen. Der Käfig weist vier Ziehpunkte bzw. Handgriffe auf, wobei drei untere Ziehpunkte 235a–c Punkte an 90°-Intervallen entlang des Umfangs von einer der kreisförmigen Oberflächen repräsentieren und der vierte Ziehpunkt 235d einen Punkt auf der gegenüberliegenden kreisförmigen Fläche repräsentiert. Während der Default- bzw. Vorgabekäfig drei untere Ziehpunkte und einen oberen Ziehpunkt aufweist, kann der Anwender eigentlich den Käfig invertieren, indem der obere Ziehpunkt so gezogen wird, daß er sich unter den drei anderen Ziehpunkten (in den relativen Positionen der Bildpunkte Ai, Bi, Ci und Di in 6A) befindet. Dies könnte ein Einpassen des Käfigs erleichtern, wo der untere Abschnitt des Zylinders teilweise versteckt war.
  • 13B repräsentiert den Bildschirm, nachdem der Anwender die Handgriffe auf entsprechenden Anordnungen bzw. Stellen in dem Bild positioniert hat, so daß die Linien des zylindrischen Käfigs ein visuell bzw. optisch akzeptables Einpassen auf die entsprechenden sichtbaren Kanten des abgebildeten Zylinders zur Verfügung stellt. Die vertikalen Linien in dem Bild des Zylinders sind nicht Kanten in dem Sinn von Kanten im Fall eines Würfels, sondern stellen identifizierbare Merkmale dar, an welchen der Käfig ausgerichtet werden kann. An diesem Punkt könnte der Anwender zum Manipulationsmodus umschalten (indem das Geh-zu-Manipulationsmodus-Werkzeug in der Konstruktionsmodus-Werkzeugleiste angeklickt wird), worauf das 3D Modell des Zylinders gedreht, bewegt oder anderen Manipulationsmodus-Vorgängen ausgesetzt werden könnte, wie dies oben beschrieben wurde.
  • Vom Blickpunkt der 3D virtuellen Kamera gibt es keinen Unterschied, ob das abgebildete Objekt ein Zylinder oder ein Kegelstumpf ist. D. h., die vier Ziehpunkte auf dem Käfig sind ausreichend, um einen 3D Rotationskörper zu definieren, welcher durch ein Überstreichen einer geraden Linie erzeugt wurde, welche eine Komponente parallel zur Drehachse um die Drehachse aufweist. Wenn sich die gerade Linie, die überstrichen bzw. bewegt wird, parallel zur Drehachse befindet, ist der resultierende Rotationskörper ein Zylinder. Wenn die Linie, die überstrichen wird, nicht parallel ist, ist das Ergebnis ein Kegelstumpf. Während der Kegelstumpf weitgehend in derartigen Artikeln vorhanden ist, wie runden Abfallkörben und einigen Lampenschirmen, sind viele abgebildete Objekte von Interesse komplexere Rotationskörper, welche durch eine überstrichene Linie charakterisiert sind, die nicht eine gerade Linie ist.
  • 7.2. Erzeugen eines komplexen Rotationskörpers
  • 14A repräsentiert ein Bild eines komplexeren Rotationskörpers, nämlich einer Flasche 240. Die Flasche ist durch einen zylindrischen unteren Abschnitt 242, einen konvexen, dazwischenliegenden Abschnitt 245 und einen zylindrischen (oder möglicherweise etwas verjüngten) Halsabschnitt 247 charakterisiert.
  • Die Figur repräsentiert den Bildschirm, nachdem der Anwender die drei unteren Ziehpunkte des zylindrischen Käfigs, bezeichnet 250, entlang der unteren Kante des zylindrischen Abschnitts und den vierten Ziehpunkt an der Spitze der Weinflaschepositioniert hat. Offensichtlich repräsentiert der Käfig an diesem Punkt einen Kegelstumpf und weist kein sichtbar annehmbares Anpassen an das abgebildete Objekt auf. Jedoch gibt es, wie oben in Verbindung mit der Beschreibung der Konstruktionsmodus-Werkzeuge erwähnt, Werkzeuge, um scharfe und weiche Ziehpunkte hinzuzufügen.
  • 14B repräsentiert den Bildschirm, nachdem der Anwender einen scharfen Ziehpunkt 255 (unter Verwendung des Hinzufügen-scharfen-Ziehpunkt-Werkzeugs) zu einer Position auf der Weinflasche hinzugefügt hat, wo der zylindrische Abschnitt den konvexen Abschnitt trifft. Dies veranlaßt eigentlich den Käfig, ein Verbundobjekt zu repräsentieren, welches einen zylindrischen Abschnitt und einen kegelstumpfförmigen Abschnitt aufweist.
  • 14C repräsentiert den Bildschirm, nachdem der Anwender einen weichen Ziehpunkt 260 auf halbem Weg um den konvexen Abschnitt hinzugefügt hat, während 14D den Bildschirm repräsentiert, nachdem der Anwender einen anderen weichen Ziehpunkt 265 hinzugefügt hat, wo der konvexe Abschnitt auf den Hals der Flasche trifft. An diesem Punkt paßt der Käfig auf eine optisch annehmbare bzw. akzeptable Weise auf das abgebildete Objekt und der Anwender kann dann zum Manipulationsmodus umschalten und durchführen egal, welche Vorgänge immer gewünscht sind.
  • 7.3 Anordnen eines 3D Modells in ein 2D Bild einer 3D Szene
  • 15A15C zeigen den Aspekt der Erfindung, der es dem Anwender erlaubt, ein 3D Objekt 270 in einer 2D Darstellung einer 3D Szene 280 anzuordnen. Das Objekt kann ein modelliertes Objekt sein, welches erzeugt wurde, wie dies in vorangegangenen Abschnitten beschrieben wurde, oder kann ein 3D Modell sein, welches durch ein herkömmliches 3D Modellierprogramm erzeugt wurde. In jedem Fall ist das 3D Modell durch Regel- bzw. Steuerelemente (Punkte oder Kanten) charakterisiert, wie beispielsweise die Ziehpunkte, die verwendet wurden, um den Drahtgittermodell-Käfig zu manipulieren. Der Anwender kann ein modelliertes Objekt in einer Szene anordnen, indem ein Bild der Szene geöffnet wird und in einen Modus bzw. eine Betriebsart zum Anordnen der Objekte eingetreten wird. Der Anwender ruft dann das anzuordnende Objekt auf.
  • 15A zeigt das 3D Modell (welches erzeugt wurde, wie dies in dem vorangegangenen Abschnitt beschrieben ist), welches einer Szene an einer zufälligen vorgegebenen Anordnung bzw. Stelle überlagert wird. Von der Szene ist gezeigt, daß sie eine Darstellung eines horizontalen rechtwinkeligen Gitters ist. In dem Modus zum Anordnen von Objekten behält das Objekt normalerweise seine 3D Gestalt bei und die Positionen der Regel- bzw. Steuerpunkte werden ma nipuliert, um die Position und Orientierung des Objekts zu spezifizieren. Sobald zwei Ziehpunkte angeordnet sind, welche eine "Länge" für eine der Kanten erstellen, werden die Längen der anderen zwei Kanten eingeschränkt, um die ursprünglichen bzw. Ausgangsproportionen aufrecht zu erhalten.
  • In dem Fall, daß der Anwender eine Anordnung wünscht, welche nicht mit den Originalproportionen des Objekts übereinstimmt, könnte eine Vorkehrung getroffen werden, um zu erlauben, daß die Proportionen des Objekts geändert werden. Dies kann als eine Option dem Anwender zur Verfügung gestellt werden, der dann die normale Aufrechterhaltung von Proportionen aufheben bzw. übersteuern kann. Da die Erfindung mit ordnungsgemäßer perspektivischer Korrektur die abgebildeten Oberflächentexturen auf dem Objekt aufrecht erhält, kann ein Ändern der Proportionen des Objekts ein Problem mit der Texturabbildung aufwerfen. Eine Änderung der Proportionen des Gegenstands erfordert eine Deformation bzw. Verformung (Streckung oder Komprimierung bzw. Verkürzung) von wenigstens einer der sichtbaren Oberflächen. Es kann einige Bilder geben, wo die Textur verformt oder reproduziert bzw. wiederholt werden kann, um die geänderten Proportionen aufzunehmen, ohne das Aussehen des Bilds zu zerreißen bzw. zu unterbrechen.
  • 15B zeigt das Objekt, wie bzw. daß es in der Szene angeordnet wurde, indem Regel- bzw. Steuerziehpunkte an entsprechenden gewünschten Stellen in der Szene positioniert wurden (in diesem Fall mit den Kanten des Kastens ausgerichtet mit dem Gitter). Abhängig von der Implementierung kann das System konfiguriert sein, so daß, sobald das 3D Objekt erzeugt wurde, jedes seiner Ecken als Ziehpunkte ma nipuliert werden kann. 15C zeigt eine unterschiedliche Positionierung basierend darauf, daß unterschiedliche Regel- bzw. Steuerpunkte auf unterschiedlichen, spezifizierten Positionen in der Szene angeordnet wurden.
  • 8. Interner Programmablauf
  • 8.1 Anfangsprogrammablauf
  • 16A ist ein Flußdiagramm, welches die Initialisierungs-Aktivitäten der aktuellen Ausführungsform des FreeD Programms zeigt. Da diese Implementierung von FreeD ein Plug-in bzw. Hilfsprogramm für das Photoshop-Bildbearbeitungs-Programm ist, wird angenommen, daß FreeD in dem Computer installiert wurde und Photoshop abläuft. Der Anwender bringt ein Bild in Photoshop hervor. Dann wählt der Anwender FreeD aus einem Satz von Plug-in-Werkzeugen. Photoshop gibt die Regelung bzw. Steuerung an FreeD ab, indem der "FilterSelectStart"-Aufruf in der Photoshop-Anwendungs-Programmierschnittstelle (API) (Schritt 300) ausgegeben wird. In anderen Ausführungsformen, wo FreeD ein in sich geschlossenes Programm ist, kann das Bild direkt erhalten werden, indem Betriebssystem-Aufrufe und Standardanwender-Schnittstellenelemente verwendet werden.
  • FreeD stuft das Bild hinab (d. h. macht das Bild kleiner), und wenn das Originalbild farbig ist, konvertiert FreeD es von Farbe auf Graufstufendarstellung (Schritt 310). Dies erlaubt es dem Programm, in weniger Computerspeicher abzulaufen und macht die Anzeige bzw. Darstellung seiner Ausgabe schneller. Darüber hinaus ist der farbige Käfig leichter gegen einen Graustufenhintergrund zu sehen und einzustellen.
  • In einer spezifischen Implementierung weist das niedriger gestufte Graufstufenbild 8-Bit-Pixel und eine Gesamtgröße auf, welche nicht größer als 384 Kilobytes ist. Wenn das Originalbild reduziert werden muß, wird es in Kacheln bzw. Fliesen unterteilt (2 × 2, 4 × 4, 8 × 8, usw. nach Bedarf) und die Pixelwerte innerhalb jeder Fliese werden gemittelt, um das hinuntergestufte Bild zur Verfügung zu stellen. Der 24-Bit-Satz eines jeden Pixels von RGB-Werten wird zu einem 8-Bit-Luminanz- bzw. -Helligkeitswert konvertiert bzw. gewandelt. Der Luminanzwert ist ein gewichteter Mittelwert der R-, G- und B-Werte, welche gegeben sind durch: 0,59 G + 0,3 R + 0,111 Bvorbehaltlich einem Normalisierungsfaktor, so daß RGB-Werte von (255, 255, 255) sich zu einem Luminanzwert von 255 abbilden. Die maximale Bildgröße ist derart, daß ein 640 × 480-Originalbild nicht hinabgestuft bzw. downsampled werden muß.
  • Nach einem Hinabstufen und Konvertieren des Originalbilds zu einer Grauskala initialisiert FreeD seine interne Geometriedatenbank (Schritt 320). FreeD ist eine Zustandsmaschine; d. h., sobald sie fortschreitet, hängen die Auswirkungen ihrer Befehle davon ab, ob und welche Bits in verschiedenen internen Registern und Tabellen vorhanden sind. "Initialisieren der Geometriedatenbank" bedeutet, daß FreeD alle Anfangswerte auf einen einheitlichen Anfangszustand stellt, um sicherzustellen, daß jeder Aufruf von FreeD sauber beginnt. Dieser Schritt ist eine Standard-Betriebsprozedur beim Programmieren eines Computers. FreeD führt dann Aufrufe an das Betriebssystem durch, um das Hauptfenster von FreeD und Anwenderschnittstellen-Elemente (Menüs, Werkzeugleiste, und Status- bzw. Zustandsbereich) anzuzeigen und die Regelungen bzw. Steuerungen des Programms zu aktivieren (Schritt 330). FreeD ist nun bereit, um eine Anwendereingabe zu empfangen und tritt bei 340 in seine Hauptereignisschleife bzw. Hauptprogrammschleife ein.
  • 8.2 Hauptprogrammschleife
  • 16B ist ein Flußdiagramm, welches die Hauptprogrammschleife von FreeD zeigt, welche abläuft, um Anwendereingaben an den geeigneten Handhaber bzw. das geeignete Steuerungsprogramm zu richten. FreeD handhabt vier Arten von Anwendereingabe: (1) Anwender drückt eine Taste; (2) Anwender bewegt die Maus; (3) Anwender klickt den Mausknopf und hält ihn ohne Loslassen nieder; und (4) Anwender läßt den Mausknopf nach einem Niederhalten los. Diese werden als "Anwenderschnittstellen-Ereignisse" bezeichnet und werden in einer Ereigniswarteschlange durch das Betriebssystem aufrecht bzw. beibehalten. Ein Anwenderschnittstellen-Ereignis kann ein Ereignissignal erzeugen, welches den Zustand von FreeD ändert. Nach einer Initialisierung führt FreeD einen Betriebssystemaufruf durch, um eine Benachrichtigung abzufragen, wenn ein Anwenderschnittstellen-Ereignis auftritt (Schritt 345). Wenn ein Anwenderschnittstellen-Ereignis auftritt, schreitet die Hauptprogrammschleife fort.
  • Wie FreeD ein Anwenderschnittstellen-Ereignis handhabt, hängt von verschiedenen Faktoren ab: der augenblicklichen Position der Maus in Bezug auf angezeigte Artikel bzw. Gegenstände (könnte über einem Menüpunkt, einem Werkzeugleistenpunkt bzw. -gegenstand oder dem Bild sein); ob sich der Mausknopf oben oder unten befindet; dem augenblicklichen Modus von FreeD, dem augenblicklichen bzw. aktuellen Werkzeug, und ob das augenblickliche bzw. gegenwärtige Werkzeug modal oder nicht modal ist. Wenn das Anwenderschnittstellen-Ereignis ein Menüereignis ist, welches durch das Betriebssystem in Antwort auf ein Maus-Unten-Ereignis über einem Punkt in der Menüleiste erzeugt wurde, wie dies an einer Verzweigung 350 bestimmt ist, überträgt die Hauptprogrammschleife die Regelung bzw. Steuerung an das geeignete Werkzeug-Steuerprogramm. Der Menübefehl wird dann ausgeführt (Schritt 355), und außer in dem Fall von OK oder Abbrechen, wird wieder in die Hauptprogrammschleife eingetreten (Abzweigung 360). In dem Fall von OK oder Abbrechen kehrt FreeD zu Photoshop zurück (Schritt 365).
  • Wenn das Anwenderschnittstellen-Ereignis ein Maus-Unten-Ereignis über einem Werkzeugleistensymbol bzw. -ikon ist, wie dies an einer Verzweigung 365 bestimmt wird, überträgt die Hauptprogrammschleife die Regelung bzw. Steuerung auf das Werkzeugleisten-Steuerprogramm von FreeD bei 370. Andererseits wird, wenn ein modales Werkzeug aktiv ist, wie dies bei einer Abzweigung 375 bestimmt wird, das Ereignis an das Werkzeug-Steuerungsprogramm für dieses modale Werkzeug weitergereicht (Schritt 380), und die Hauptprogrammschleife wird wieder betreten.
  • 8.3 Menüvorgänge bzw. -abläufe
  • Menüvorgänge in FreeD werden durch das Betriebssystem gehandhabt. FreeD initialisiert eine Datenstruktur, die die Positionen und Text der verschiedenen Menüeinträge zusammen mit einer Identifikations-Nummer für jeden Eintrag spezifiziert. Diese Datenstruktur wird an das Betriebssystem weitergereicht, wenn FreeD hochfährt. Wenn der Anwender die Maus über den Menübereich bewegt und den Mausknopf drückt, handhabt das Betriebssystem die Menüanzeige und Interak tion. Wenn der Anwender einen Menüeintrag auswählt, fügt das Betriebssystem ein Menüereignis, welches die ID bzw. Identifikation des Menügegenstands beinhaltet, zu der Ereigniswarteschlange für FreeD hinzu. Schließlich empfängt FreeD dieses Ereignis und ruft das FreeD-Werkzeug auf, welches mit der Menü-Identifikation assoziiert ist. In ähnlicher Weise fügt, wenn der Anwender eine oder mehrere Tasten drückt, welche Menüäquivalente sind, das Betriebssystem die Identifikation des entsprechenden Menüpunkts bzw. -gegenstands zu der Ereigniswarteschlange hinzu.
  • Mehrere der Werkzeuge, welche mit Menüeinträgen assoziiert sind, verwenden Betriebssystem-Dialogkästen, um Parameter von dem Anwender aufzurufen. Um einen dieser Dialogkästen zu benützen, baut FreeD zuerst eine Datenstruktur auf, welche das Layout bzw. die Anordnung der Dialogpunkte bzw. -gegenstände, ihr Aussehen und ihr Verhalten (Textpunkt, Knopf bzw. Taste, usw.) spezifiziert. FreeD gibt dann diese Beschreibung an das Betriebssystem und der Dialogkasten wird angezeigt. Die gesamte Anwenderinteraktion und ein Zeichnen, während sich der Dialogkasten auf dem Bildschirm befindet, wird durch das Betriebssystem gehandhabt. Wenn der Anwender den "Cancel"- bzw. "Abbrechen"-Knopf anschlägt, dann kehrt das Betriebssystem mit einem Code eines abgebrochenen Zustands bzw. Abbruchzustands-Code zurück und das FreeD-Werkzeug kehrt zurück, ohne irgendetwas zu tun. Wenn der Anwender den "OK"-Knopf anschlägt, dann kehrt das Betriebssystem mit einem Erfolgszustands-Code und allen durch den Anwender eingegebenen Daten zurück. Das FreeD-Werkzeug verwendet dann diese Daten, um seinen Vorgang bzw. Betrieb zu vollenden.
  • 8.4 Werkzeugleisten-Steuerprogramm
  • 16C ist ein Flußdiagramm, welches das Werkzeugleisten-Steuerprogramm von FreeD zeigt. Wie im Detail oben besprochen bzw. diskutiert wurde, weist FreeD zwei getrennte Werkzeugleisten auf, wovon eine jede einem Hauptmodus des Betriebs bzw. Betriebshauptmodus entspricht. Im Konstruktionsmodus baut der Anwender ein 3D Modell auf. Im Manipulationsmodus manipuliert der Anwender das 3D Modell. FreeD stellt deshalb Werkzeuge zur Verfügung, um ein 3D Modell zu konstruieren oder manipulieren, oder um zwischen Konstruktions- und Manipulationsmodi umzuschalten. Wie oben erwähnt, gibt es zwei Typen von Werkzeugen: modal und nicht-modal.
  • Das Werkzeugleisten bzw. -balken -Steuerprogramm geht anfänglich in eine Schleife 380, welche auf ein Maus-Aufwärts-Ereignis wartet. Wenn der Anwender auf der Maus losläßt, wie dies an einer Abzweigung 385 bestimmt wird, dann hat der Anwender den Punkt bzw. Gegenstand ausgewählt und das Werkzeugleisten-Steuerprogramm überprüft an einer Abzweigung 390, um sicherzustellen, daß das ausgewählte Werkzeug gegenwärtig freigegeben ist. Wenn das ausgewählte Werkzeug nicht freigegeben bzw. aktiviert ist, gibt das Werkzeugleisten-Steuerprogramm die Regelung bzw. Steuerung an die Hauptereignisschleife zurück.
  • Wenn der Anwender die Maus über ein freigegebenes Werkzeugleistensymbol bewegt und nach unten und oben klickt, bestimmt FreeD zuerst an einer Abzweigung 395, ob das Symbol bzw. Bildzeichen bzw. Ikon ein modales oder ein nichtmodales Werkzeug bezeichnet. Der Unterschied zwischen modalen und nicht-modalen Werkzeugen ist, daß nur modale Werkzeuge "aktiv" gemacht werden können (Schritt 400). Wenn ein moda les Werkzeug aktiv ist, interpretiert es Anwenderschnittstellen-Ereignisse in dem Bildfenster als Eingabe an sich selbst. Mit anderen Worten, ein aktives Werkzeug handhabt die gesamte Anwendereingabe in dem Bildfenster, bis der Anwender das Werkzeug schließt. Dies kann in 16A (Hauptprogrammschleife) gesehen werden, wo Anwenderschnittstellen-Ereignisse an das aktive Werkzeug-Steuerprogramm übergeben werden, wenn sie nicht in der Menüleiste oder der Werkzeugleiste auftreten.
  • Ein Anwender schließt ein modales Werkzeug durch ein Initiieren eines anderen Anwenderschnittstellen-Ereignisses aus der Werkzeugleiste. Beispielsweise ist das Zoom-Werkzeug ein modales Werkzeug. Wenn ein Anwender das Zoom-Werkzeug aufruft bzw. anfordert, wird das Zoom-Werkzeug aktiv. D. h., FreeD tritt in einen Submodus ein, in welchem es Anwenderschnittstellen-Ereignisse in dem Bildfenster als Eingabe zu dem Zoom-Werkzeug interpretiert, bis der Anwender das Zoom-Werkzeug schließt. Andere modale Werkzeuge beinhalten Ändere-Bildfeld-, Füge-scharfen-Ziehpunkt-hinzu-, Füge-glatten-Ziehpunkt-hinzu-, Bewege-Objekt-, Drehe-Objekt-Werkzeuge und alle Kamerabewegungs-Werkzeuge (Umkreisen, Kamerawagen und Schieben).
  • Ein nicht-modales Werkzeug erledigt im Gegensatz eine Arbeit und gibt eine Regelung bzw. Steuerung augenblicklich an die Hauptprogrammschleife zurück. Ein nicht-modales Werkzeug weist keine aktiven oder inaktiven Phasen auf. Nicht-modale Werkzeuge beinhalten die Lösche-FreeD-Objekt-, Konstruiere-3D-Box-, Konstruiere-3D-Rotationskörper-, Konstruiere-Kugel- und Setze-auf-Anfangswerte-zurück-Werkzeuge. Wenn ein nicht-modales Werkzeug ausgewählt wird, wie dies an einer Abzweigung 405 bestimmt wird, wird das Werk zeug ausgeführt (Schritt 410). Nach einem Ausführen des ausgewählten nicht-modalen Werkzeugs überträgt das Werkzeugleisten-Steuerprogramm die Regelung bzw. Steuerung zu der Hauptereignis- bzw. -programmschleife zurück.
  • 9. FreeD-Datenstrukturen
  • 9.1 Einführung
  • FreeD ist in der C++-Programmiersprache geschrieben und macht umfassend Gebrauch von objektorientierten Programmiertechniken. Bei FreeD, wie in den meisten objektorientierten Anwendungen, bilden einige zentrale Klassendefinitionen die Basis des Designs bzw. Entwurfs. Die folgende Beschreibung der Hauptklassenstruktur von FreeD in Verbindung mit der obigen detaillierten Beschreibung der zugrundeliegenden Technologie der projektiven Geometrie und Anwenderwechselwirkungen mit dem Programm erleichtern ein Verstehen der gesamten Anwendung bzw. Anmeldung.
  • 9.2 Tools bzw. Werkzeuge
  • Der Code zum Ausführen eines jeden Befehls ist in den Verfahren bzw. Methoden einer Klasse angeordnet, welche von dem Basisklassenwerkzeug abgeleitet ist. Jeder Befehl belegt eine Instanz seiner Sub- bzw. Unterklasse des Werkzeugs und registriert einen Zeiger zu der Instanz bzw. der Stelle zusammen mit der ganzzahligen ID bzw. Identifikation des Befehls in einer zentralen Werkzeugtabelle. Es gibt auch eine globale Variable, welche die Identifikation des aktiven Werkzeugs hält.
  • Figure 00740001
  • Figure 00750001
  • Wenn der Anwender einen Befehl aufruft, wird die Identifikation bzw. ID des Befehls in der Werkzeugtabelle gesucht und das cmd-Verfahren wird aufgerufen für die abgeleitete Klasse des Befehls. Ein modusloser Befehl vervollständigt seine Aktion und kehrt zurück. Andererseits setzt ein moda ler Befehl einfach das global aktive Werkzeug auf sich selbst. Wenn das aktive Werkzeug gewechselt wird, hat das Werkzeug, das ursprünglich aktiv war, sein Fokusverfahren aufgerufen mit einem falschen Parameter, welcher anzeigt, daß es inaktiv wird. Das Werkzeug, das aktiv wird, hat dann sein Focus-Verfahren mit einem wahren Parameter aufgerufen. Wenn das Focus-Verfahren eines Werkzeugs mit einem wahren Parameter aufgerufen wird, setzt es den Maus-Cursor und zeigt einen Statusstring bzw. eine Statuszeichenkette an, der (die) anzeigt, daß es bereit ist, Ereignisse handzuhaben.
  • Wenn der Anwender die Maus bewegt, den Mausknopf drückt oder losläßt, oder eine Taste drückt oder losläßt, wird ein Ereignis durch das Betriebssystem erzeugt. Wenn es ein aktives Werkzeug gibt, ruft FreeD das Verfahren des Werkzeugs auf, um das Ereignis handzuhaben. Das Maus-Verfahren wird für Mausknopf nach oben oder nach unten und Maus-Bewegen-Ereignisse aufgerufen und das Tasten-Verfahren wird für Ereignisse der Tastatur nach oben oder nach unten aufgerufen.
  • Das andere wichtige Werkzeugverfahren ist uiUpdate, welches für alle registrierten Werkzeuge aufgerufen wird, wenn eine Änderung an der Anwenderschnittstelle vorgenommen wird. Ein Beispiel dieser Art von Veränderung ist, wenn der Anwender das Bildfenster in der Größe anpaßt.
  • 9.3 Referenzgezählte Objekte
  • Ein Standardverfahren, um der Eigentümerschaft von Objekten in einem Softwaresystem nachzugehen, ist, die Technik zu verwenden, welche Referenzzählen genannt wird. Bei diesem Verfahren hält jedes Objekt eine Zählung der Anzahl von Re ferenzen bzw. Bezügen zu ihm, welche in dem System existieren. Wenn diese Zählung gegen 0 geht, dann kann das Objekt gelöscht werden. FreeD verwendet diese Technik, um die Lebenszeiten von vielen seiner Objekte zu verwalten. Jedes Objekt, welches Referenzzählung verwendet, leitet sich von der Klasse Obj ab, wie dies unten definiert ist.
  • Figure 00770001
  • Wenn ein Bezug zu einem Objekt hergestellt wird, welches sich von Obj ableitet, wird das Verfahren ref aufgerufen. Wenn der Bezug nicht länger benötigt wird, wird das Verfahren unref aufgerufen.
  • 9.4 Objekte, welche für den Anwender sichtbare Namen und Daten aufweisen
  • Einige Objekte in FreeD können durch den Anwender benannt werden und auch durch den Anwender modifizierbare bzw. -veränderbare Daten beinhalten. Diese Objekte werden von der Klasse Pobj abgeleitet, wie dies unten definiert ist.
  • Figure 00780001
  • Pobj abgeleitete Objekte weisen Verfahren zum Erlangen und Setzen bzw. Einstellen ihrer Namen auf, ebenso wie Verfahren zum Lesen und Setzen von durch einen Anwender modifizierbaren Daten. Pobj ist eine Unterklasse von Obj.
  • 9.5 Geometrische Objekte
  • Jedesmal, wenn der Anwender ein neues geometrisches Objekt in FreeD definiert, wird eine Instanz einer Klasse, welche von GO abgeleitet ist, erstellt bzw. erzeugt, um die Daten des Objekts aufrecht zu halten. Es gibt drei Unterklassen von GO in FreeD. GOBall ist die Unterklasse, welche ein kugelförmiges Objekt definiert, GOBox definiert einen rechtwinkeligen Festkörper, und GORev definiert einen Rotationskörper. Geometrische Objekte werden bearbeitet, indem Aufrufe der in GO deklarierten Verfahren vorgenommen werden. Die Definition der Basisklasse GO ist wie folgt:
  • Figure 00790001
  • Figure 00800001
  • Figure 00810001
  • Figure 00820001
  • Die Positions-, Orientierungs- und Gestaltparameter von geometrischen Objekten sind bzw. werden durch einen Satz von 2D Eckpunkten bzw. Scheiteln definiert, welche auf der Projektionsoberfläche der Objekte definierenden Kamera angeordnet sind. Die definierende Kamera wird unter Verwendung des Set-Camera-Verfahrens eingestellt. Die Anzahl der definierenden Scheitel wird durch das numControlPt-Verfahren zurückgegeben. Es gibt auch einen Satz von definierenden Kanten für ein Objekt, welche die Projektionen der Silhouette des 3D Objekts sind. Die Anzahl dieser Kanten wird zurückgegeben durch numControlEdge. Die Anordnungen bzw. Stellen der definierenden Scheitel können mit SetControlPt und move eingestellt werden. Wann immer eine definierende Regel- bzw. Steuerpunktanordnung geändert wird, berechnet das Objekt seine Positions-, Orientierungs- und Gestaltparameter neu. Die Scheitel der 3D Gestalt des Objekts sind unter Verwendung des getVertexList-Verfahrens verfügbar. Wie vorher festgestellt wurde, wird die 3D Position, Orientierung und Gestalt eines geometrischen Objekts durch die Anordnungen seiner definierenden Punkte definiert. Jedoch können die 3D Position, die Orientierung und der Gesamtmaßstab eines Objekts weiter abgeändert werden, indem das SetXForm-Verfahren aufgerufen wird. Alle Gegenstände werden zu einer Sammlung von 3D "Flächen" konvertiert, bevor sie gerendert werden. Flächen sind Dreiecke oder flache Vierecke. Die Flächen, die ein geometrisches Objekt repräsentieren, sind durch Aufrufen von getFaceList verfügbar. Schließlich wird das Render-Verfahren aufgerufen, um ein Objekt zu rendern.
  • 9.6. Undo bzw. Rückgängigmachen und Redo bzw. Neumachen
  • Die mehrstufige Undo- und Redo-Fähigkeit ist ein wichtiger Aspekt der Verwendbarkeit von FreeD. Die Klasse Undo ist eine virtuelle Basisklasse für einen Satz von abgeleiteten Klassen, welche Daten beinhalten, die verwendet werden können, um den Ablauf bzw. die Wirkung von FreeD Befehlen rückgängig zu machen oder wieder zu machen bzw. zu wiederholen. Die Definition von Undo ist:
  • Figure 00830001
  • Das execute-Verfahren wird mit einem wahren Parameter aufgerufen, um die Wirkung eines Befehls rückgängig zu machen, oder mit falsch, um seine Arbeit wiederherzustellen. Das release-Verfahren wird aufgerufen, wenn ein Undo-Befehl von dem Undo-Stapelspeicher gelöscht wird.
  • Ein nicht rückgängig zu machender Vorgang kann tatsächlich aus mehrfachen Befehlen niedrigen Niveaus bestehen, welche in einer spezifischen bzw. bestimmten Reihenfolge ausgeführt werden. Um dieses Detail vor dem Anwender versteckt zu halten, ist die Klasse UndoTrans definiert. UndoTrans hält eine Sequenz bzw. Abfolge von Undo-Instanzen und weist einen String bzw. eine Zeichenfolge auf, der (die) sich in dem Undo- und Redo-Menüeintrag zeigt, wenn sich der Arbeitsvorgang auf der Spitze des Undo-Stapelspeichers befindet.
  • Jedesmal, wenn der Anwender einen Befehl gibt, welcher nicht rückgängig zu machen ist, baut FreeD einen Satz von einer oder mehreren Instanz(en) von von Undo abgeleiteten Klassen auf, welche die Daten beinhalten, die für ein Rückgängigmachen des Befehls notwendig sind. Diese Objekte werden dann in einer neuen Instanz von UndoTrans zusammen mit einem String gepackt, welcher den Befehl beschreibt. Die neue Instanz von UndoTrans wird dann auf einen Stapelspeicher gedrückt, welcher durch eine Instanz von UndoStack gehalten wird, welche definiert ist wie folgt:
  • Figure 00840001
  • Figure 00850001
  • Diese Verfahren von UndoStack implementieren einen standardmäßigen LIFO-Stapelspeicher von UndoTrans-Instanzen.
  • 9.7 Kamera
  • Es gibt zwei Instanzen der Kameraklasse. Diese Objekte halten die Daten, welche erforderlich sind, um Bilder zu rendern und mit dem Anwender zu interagieren. Ein Kameraobjekt wird für die Konstruktionsmodus-Schnittstelle verwendet und die andere wird für den Manipulationsmodus verwendet. Kameraobjekte beinhalten die Daten, welche notwendig sind, um das Rendern von Bildern zu regeln bzw. steuern.
  • 9.8 Welt
  • Es gibt eine Instanz der World- bzw. Welt-Klasse. Das Weltobjekt beinhaltet die Geometriedatenbank. Diese Datenbank ist eine Liste von GO-Instanzen, die die Daten für jedes der geometrischen Objekte halten, die durch den Anwender definiert sind. Das Weltobjekt beinhaltet auch das Undo-Stack-Objekt, welches Daten für den gegenwärtigen Satz von rückgängig zu machenden Befehlen hält. Zuletzt beinhaltet das Weltobjekt die zwei Kamera-Objekte und eine Anzeige, welches augenblicklich aktiv ist.
  • 10. Zusätzliche Merkmale
  • 10.1 Zusätzliche Betrachtungs- bzw. Ansichtsoptionen
  • In der gegenwärtigen Implementierung als ein Photoshop-Plugin bzw. Photoshop-Hilfsprogramm nimmt FreeD Sub- bzw. Unter-Proben des eigegebenen bzw. Eingabebilds und konvertiert sie zu einem Graustufenbild. Dies wurde hauptsächlich aus Geschwindigkeitsgründen vorgenommen, da die anfängliche Zielmaschine die Klasse 386 PC war. Fortschritte bei der Maschinengeschwindigkeit haben dies unnötig gemacht, obwohl dies noch immer nützlich ist. Es wäre bevorzugt, dem Anwender zusätzliche Betrachtungs- bzw. Ansichtsoptionen zu gestatten. Ein Satz von Optionen ist, es dem Anwender zu gestatten, das Bild in Farbe sowohl im Konstruktionsmodus wie auch im Manipulationsmodus zu betrachten. Dies kann unter Verwendung der vollen Auflösung, des vollen bzw. Vollfarbbilds oder einer Version einer niedrigeren Auflösung oder niedrigeren Bit-Tiefe (weniger Farben) davon vorgenommen werden.
  • Es wäre auch für den Anwender vorteilhaft zu spezifizieren, daß die Konstruktions- und Manipulationsmodus-Fenster zur selben Zeit sichtbar sind. Dies würde es dem Anwender gestatten, das Passen des Konstruktionsmodus schneller zu überprüfen.
  • Einer der potentiellen Nachteile beim Versuch, den Käfig über ein Vollfarbenbild einzupassen, ist, daß der Käfig schlecht zu sehen sein könnte. Dies kann in einer Anzahl von Weisen gehandhabt werden. Beispielsweise kann dem Anwender die Fähigkeit gegeben werden, die Farbe oder andere Erscheinungsattribute des Käfigs abzuändern, wie beispielsweise ein Blinken auf Wunsch, oder Anzeigen als "marschierende Ameisen" (gebildet aus gestrichelten Linien, deren Muster sich entlang des Pfads bewegen, ein bißchen ähnlich zu Theatervordach-Lauflichtern). Alternativ könnte der Anwender mit der Fähigkeit ausgestattet werden, die Bildsättigung bzw. Bildfarbart zu reduzieren, so daß ein farbiger Käfig mehr hervorstechen würde.
  • 10.2 Hinzufügen von Texturen zu den Rückseiten von Objekten
  • Die gegenwärtige Implementierung von FreeD kann die 3D Gestalt, Orientierung und Position eines Objekts festlegen, welches in einem 2D Bild abgebildet ist, und kann die geeigneten Abschnitte des Originalbilds auf die sichtbaren Oberflächen des 3D Objekts abbilden, die es konstruiert. Dies ist eine sehr mächtige Fähigkeit, jedoch eine, welche verbessert werden könnte, indem Bildtexturen auf alle Oberflächen angewendet werden, einschließlich jener Oberflächen, welche in dem Originalbild nicht sichtbar waren.
  • Es gibt verschiedene Wege, um Texturen zu jenen Oberflächen hinzuzufügen, welche in dem ursprünglichen 2D Bild eines 3D Objekts nicht sichtbar sind. Ein Weg ist, Texturen von einer sichtbaren Oberfläche zu jenen zu kopieren, welche nicht sichtbar sind. Dieses Verfahren arbeitet für einige Anwendungen gut, wo genaue Wiedergaben nicht notwendig sind, sondern nur ein allgemeiner Entwurf eines Objekts notwendig ist. Ein Beispiel könnte es sein, einen Getreidebox für einen virtuellen Schauplatz zu erstellen. Die Vorderseite, eine Seite, und eine Oberseite des Kastens bzw. der Box könnten zur Rückseite, anderen Seite und Boden- bzw. Unterseite repliziert werden. Eine mögliche Anwender-Schnittstelle zur Oberflächentextur-Replizierung würde es sein, eine Textur-Replizierung bzw. -Wiederholung als eine zusätzliche Objekteigenschaft zu definieren, und einen Prüfkasten in dem Eigenschaftsdialog für das Objekt zur Verfügung zu stellen, welcher anzeigt, ob dieses Merkmal aufgerufen bzw. angefordert ist. Wenn dieser Prüfkasten überprüft wurde, dann würden die hinteren Oberflächen zu umgedrehten Kopien der Texturen von der gegenüberliegenden sichtbaren Oberfläche werden. Dies würde wahrscheinlich auch in Fällen geeignet sein, wo das Objekt im Manipulationsmodus nur etwas gedreht wurde.
  • Ein anderer Weg, um Texturen für Oberflächen zur Verfügung zu stellen, die in dem ursprünglichen 2D Bild nicht sichtbar sind, ist, es dem Anwender zu erlauben, ein Malwerkzeug zu verwenden, um direkt auf die Oberflächen zu malen. Diese Art von Werkzeug ist in verschiedenen kommerziellen Produkten verfügbar, wie beispielsweise Fractal Design Detailer. Bilddaten können von anderswo importiert und gestreckt, geschrumpft oder verzerrt werden, bis sie auf die Oberfläche passen. Da FreeD bereits seine Bilder streckt, schrumpft und verzerrt, um das korrekte Aussehen zu erzielen, wäre die Implementierung der "Male"-Schnittstelle eine unkomplizierte Erweiterung.
  • Alternativ könnte(n) ein Bild oder Bilder der Rückseite des erstellten 3D Objekts verwendet werden, um Texturen zu erhalten. Die neuen Bilder wären nicht erforderlich, um eine Gestaltinformation zur Verfügung zu stellen, wie sie in anderen 3D-aus-2D-Softwarepaketen sind, jedoch primär, um Texturen für hintere Oberflächen zur Verfügung zu stellen. Eine mögliche Anwenderschnittstelle zum Verwenden von zusätzlichen bzw. Extrabildern würde durch ein Rendern einer Ansicht des zuvor konstruierten 3D Objekts in das neue Bild, zusammen mit einigen Ziehpunkten arbeiten. Der Anwender könnte dann diese Ziehpunkte an die korrekten Stellen auf dem Bild des 3D Objekts bewegen. Dies ist sehr ähnlich der Anwenderschnittstelle in der gegenwärtigen Ausführungsform außer in dem Fall, daß kein 3D Modell konstruiert wird (da es bereits existiert). Der Punkt der Anwenderinteraktionen bzw. Anwenderwechselwirkungen in diesem Fall ist, die Kameraparameter, welche mit dem sekundären Bild assoziiert sind, derart zu verändern, daß die gerenderte Ansicht des 3D Objekts mit der Ansicht des Objekts in dem Bild übereinstimmt. Sobald diese Anpassung stattgefunden hat, können die Abschnitte des Bilds, die den Oberflächen auf dem 3D Objekt entsprechen, als Texturen angewendet bzw. aufgebracht werden. Somit eignet sich diese Technik selbst sehr gut für Bilder, welche aus umstrukturierten "im Umhergehen"-Videos erhalten wurden, die mit einem Camcorder aufgenommen und durch eine Computervideo-Eingabevorrichtung erfaßt wurden.
  • 10.3 Erstellen von Schablonen für externe Programme
  • Das oben besprochene bzw. diskutierte Problem, nämlich, daß ein einzelnes bzw. Einzelbild keine explizite Information darüber beinhaltet, was sich auf versteckten Oberflächen befindet, ist mit einem ähnlichen Problem verwandt, nämlich, daß ein Einzelbild keine explizite Information darüber beinhaltet, was hinter einem abgebildeten Objekt versteckt ist. Gegenwärtig erlaubt es FreeD dem Anwender, das Problem in einer von zwei Arten anzugehen, indem die "Zeige Geisterbild"-Eigenschaft des Objekts auf einen von zwei Werten gestellt wird. Wenn alles, was benötigt wird, eine andere Instanz bzw. ein anderes Beispiel desselben Objekts ist, kann der Anwender die Zeige-Geisterbild-Eigenschaft so einstellen, um das Geisterbild nicht zu zeigen (d. h. das Bild bzw. Abbild des abgebildeten Objekts an der Stelle zu belassen), und es gibt kein Problem. Wenn jedoch das Objekt an seiner Originalanordnung entfernt werden muß, stellt der Anwender die Zeigegeisterbild-Eigenschaft des Objekts auf Zeige das Geisterbild. Wenn der Anwender ein derartiges Objekt bewegt, verbleibt ein graues "Loch", wo das Objekt zu sein pflegte.
  • Der Anwender muß dann ein externes Bildmanipulations-Programm (wie beispielsweise Adobe Photoshop) aufrufen, um das Loch zu reinigen oder auszubessern, indem darüber gemalt wird und Schatten festgelegt werden. Jedoch verfügt das externe Programm nicht über spezifische Information darüber, welche Bereiche bzw. Flächen FreeD berührt hat. Während also Anwender nur wünschen würden, nur die Bereiche zu modifizieren, welche durch FreeD beeinflußt wurden, haben sie keinen automatischen Weg, um sich gegen ein Modifizieren anderer Pixel zu schützen, wie auch wenn sie versuchen, das Geisterbild auszumalen bzw. zu übermalen. Da jedoch FreeD immer eine Aufzeichnung der Veränderungen aufbewahrt, die es an einem Bild vornimmt, ist es in einer einzigartigen Position, eine Schablone oder Maske zu erzeugen – eine Darstellung des Bilds, welche die Fläche(n) auszeichnet, die von FreeD beeinflußt wurden. Somit kann der Anwender sicher sein, nur die Flächen bzw. Bereiche auszubessern, welche durch FreeD beeinflußt wurden.
  • Eine mögliche Annäherung an das Problem, die anwendbar ist, wo es möglich ist, zusätzliche Bilder des Bereichs hinter dem Objekt zu erhalten, wäre, Information von den zusätzlichen Bildern zu verwenden, um das Loch auszufüllen.
  • 10.4 Computerunterstützte Anordnung von Regel- bzw. Steuerelementen
  • In der spezifischen Implementierung ist der Anwender vollständig für ein Abbilden bzw. Aufzeichnen der Regel- bzw. Steuerelemente (Ziehpunkte und Kanten) an Bildanordnungen (d. h. Registrieren des Käfigs auf das Bild) verantwortlich. Jedoch kann es unterschiedliche Aufteilungen der Arbeit zwischen dem Anwender und dem Computer geben, wenn es dazu kommt, das Abbilden von Regel- bzw. Steuerelementen auf Bildanordnungen bzw. -stellen herzustellen. Wie oben erwähnt wurde, nützt die Erfindung die natürliche Fähigkeit des Anwenders aus, Gestalten bzw. Formen in Bildern zu erkennen, und die Anwenderanordnung von Regel- bzw. Steuerelementen ist extrem effektiv. An dem anderen Extrem wäre eine komplett computerisierte Bildanalyse zur Erkennung von Gestalten in Bildern. Während die gegenwärtige Technologie im allgemeinen nicht ausreichend robust oder effizient für eine vollständige Erkennung ist, könnten einige Ausführungsformen der Erfindung es dem Computer erlauben, einige Bildanalysen durchzuführen, sobald der Anwender Anordnungen bzw. Stellen in dem Bild für eine Anordnung von Regel- bzw. Steuerelementen spezifiziert hat. In derartigen Ausführungsformen würde das System arbeiten, um die Anordnung des Anwenders von Regel- bzw. Steuerelementen zu verbessern, um die Abbildung herzustellen bzw. aufzubauen. Diese bekannten Techniken zur Kantendetektion, Hügelklettern, genetischer Algorithmen, simuliertes Härten und dgl. können implementiert werden, um eine örtliche Optimierung der Regel- bzw. Steuerelement-Anordnung durchzuführen. Abhängig von der gewünschten Implementierung könnte eine manuelle Anordnung oder computergebildete Anordnung die Voreinstellung sein.
  • 10.5 Beziehungen zwischen Objekten
  • Die gegenwärtige Ausführungsform von FreeD kann die 3D Gestalt, Orientierung und Position eines Objekts feststellen, welches in einem 2D Bild abgebildet ist. Die in der gegenwärtigen Ausführungsform beschriebene Technologie kann nicht die absolute Distanz der Objekte von dem Blickpunkt angeben, sondern nur die relativen Distanzen bzw. Abstände der Eckpunkte bzw. Scheitel des Objekts.
  • 17A17C zeigen, wie Information über Beziehungen bzw. Zusammenhänge zwischen Objekten verwendet werden kann, um eine zusätzliche positionelle Information zur Verfügung zu stellen. Wenn mehrfache bzw. mehrere Objekte 420 und 422 konstruiert werden, wie in 17A, führt der Mangel an Kenntnis über den Abstand von dem Blickpunkt zu einem Ausrichtungsproblem. Dieses Problem ist in 17B gezeigt, welche eine rechte Seitenansicht der aus 17A konstruierten Objekte ist. Beachte, daß die Objekte nicht ihre Bodenoberflächen auf derselben Ebene ruhend aufweisen. Dies ist eine perfekt gültige Interpretation von 17A, jedoch eine, welche die meisten Anwender überraschen würde.
  • Eine neue Art von Eingabe von dem Anwender, genannt eine "Beziehung", könnte verwendet werden, um dieses Problem zu eliminieren. Wenn der Anwender einen Weg hätte, um zu spezifizieren, daß beide Objekte 420 und 422 auf derselben Ebene sitzen würden, dann könnte das Objekt 422 vorwärts bewegt werden, bis sein Boden mit dem Objekt 420 ausgerichtet ist, wie in 17C. Dies ist auch eine gültige Interpretation von 17A, jedoch eine, die den hinzugefügten Vorteil hat, um die vom Anwender gelieferte Beziehung zu erfüllen. FreeD könnte einfach den Anwender fragen, um jede gewünschten (und möglichen) geometrischen Beschränkungen zu spezifizieren. Unter Verwendung dieser Information könnte FreeD dann die Position und Orientierung von neuen Objekten ableiten. Beispielsweise könnte, wenn der Anwender spezifiziert hat, daß verschiedene Objekte auf einen Tisch (eine einzelne Ebene) gesetzt sind, FreeD die relative Distanz bzw. den relativen Abstand von dem Auge für alle Objekte auf dem Tisch berechnen.
  • Dieses Schema, es dem Anwender zu erlauben, Beziehungen zwischen Objekten zu spezifizieren, paßt recht nett in das allgemeine Entwurfsziel, daß der Anwender Dinge spezifiziert, welche für den Computer schwer zu erkennen sind, während der Computer die mathematische Arbeit leistet, um 3D Modelle aus der Eingabe aufzubauen bzw. zu erstellen.
  • Obwohl ein automatisches Anordnen von Objekten in Beantwortung angegebener Beziehungen eine höchst nützliche Funktionalität ist, ist es auch wünschenswert, dem Anwender eine gewisse Regelung bzw. Steuerung zu gestatten. Eine Art, dem Anwender zu erlauben, mit dem Problem einer Mehrdeutigkeit des Abstands von dem Blickpunkt umzugehen, ist, ein "eingeschränktes" Bewegungswerkzeug im Manipulationsmodus zur Verfügung zu stellen, welches dem Anwender erlauben würde, 3D Objekte nur weiter weg von oder näher zu dem Blickpunkt zu bewegen. Dieses Werkzeug würde auch dafür Sorge tragen, den Maßstab des Objekts auszudehnen oder zu schrumpfen, so daß er sich noch korrekt in der Konstruktionsmodus-Ansicht abbildet.
  • In vielen Fällen wäre es für FreeD möglich, automatisch die 3D Position und Orientierung von zusätzlichen Objekten relativ zu bereits positionierten Objekten zu berechnen. Ein Beispiel ist der Fall eines neuen Objekts, welches Regel- bzw. Steuerpunkte mit einem 3D Objekt teilt, dessen Koordi naten bereits bekannt sind. Es soll angenommen werden, daß der Anwender zwei Kästen positioniert hat. Wenn der Anwender dann eine 2D Platte spezifiziert hat, welche die Ecken der Kästen verbindet, könnte FreeD die Position, Gestalt und Orientierung der Platte ableiten.
  • 10.6 Messung realer Objekte
  • Jeder, der bildbelesen ist, weiß, daß ein Golfball in einem Bild so groß wie ein Volleyball in einem anderen Bild aussehen kann, abhängig davon, wie die Bilder aufgenommen werden. FreeD ist ebenfalls nicht verwirrt. FreeD muß nicht wissen, wie groß oder klein irgendein abgebildete Objekt wirklich ist, da alle FreeD-Modelle sich in Bezug zueinander im korrekten Maßstab befinden.
  • Jedoch könnte, da die absolute Maßeinheit für einige Anwendungen von Bedeutung sein könnte, FreeD dem Anwender die Option anbieten, absolute Messungen von abgebildeten Objekten zu spezifizieren. Der Anwender müßte nicht sehr viel wissen. Beispielsweise könnte, wenn der Anwender die reale Länge von nur einer Seite eines Kastens wüßte und dies zu FreeD kommuniziert hätte, FreeD automatisch alle anderen realen Dimensionen berechnen. Dies ist nützlich, um grobe Messungen von sehr großen Objekten (z. B. kastenähnliche Gebäude, Felder) von 3D Modellen vorzunehmen, welche aus Fotografien erzeugt wurden, plus eine reale Messung (z. B. die Länge entlang der Straße), ohne Vermessungswerkzeuge. Vom Anwender zur Verfügung gestellte spezifische Dimensionen oder relative Dimensionen für mehrfache Objekte könnten weiters beim Aufrechterhalten von Beziehungen bzw. Zusammenhängen unter den Objekten helfen. Beispielsweise wäre, wenn der Anwender wüßte, daß zwei Objekte in der Szene ungefähr von derselben Größe wären, dies eine nützliche Information zum Bestimmen relativer Distanzen bzw. Abstände von dem Blickpunkt.
  • 10.7 Beleuchtung und Schatten
  • Information bezüglich Beleuchtung und Schatten erlaubt die Erstellung von realistischeren Modellen und das Schlußfolgern von Information über die in einem Bild abgebildeten Objekte. FreeD könnte somit Beleuchtungseffekte auf seinen 3D Modellen erstellen und modifizieren, indem eine standardmäßige 3D Renderungstechnologie an seinen intern gespeicherten Bilddaten angewendet wird.
  • Wenn die Charakteristika bzw. Merkmale des Lichts, das die Objekte in dem Bild beleuchtet hat, bekannt sind, könnten diese Charakteristika bzw. Eigenschaften verwendet werden, um Information darüber zu sammeln, wie das Objekt unter unterschiedlicher Beleuchtung aussehen würde. Dies kann relevant sein, wenn das Objekt innerhalb derselben Szene bewegt wird, jedoch kann relevanter sein, wenn ein modelliertes Objekt in einer anderen Szene mit anderen Beleuchtungs-Charakteristika angeordnet wird. Eine Kenntnis der Beleuchtungs-Charakteristika hilft auch bei der Erzeugung ordnungsgemäßer Schatten für Objekte, welche neu in der Szene angeordnet wurden, oder Objekte, welche von einem Platz zu einem anderen in der Szene bewegt wurden.
  • Zusätzlich könnte FreeD die Abschattungsinformation in den Daten analysieren, um ihm zu ermöglichen, die Intensitäten und Positionen der Lichter zu berechnen, welche verwendet wurden, um das Originalbild zu erzeugen. Anwender könnten somit die Beleuchtungsbedingungen des Originalbilds wieder erzeugen und dann zusätzliche Objekte in eine Szene mit kompatibler bzw. passender Beleuchtung rendern. Anwender könnten somit FreeD Objekte aus verschiedenen Quellen mit verschiedenen Lichtquellen in einheitlich bzw. übereinstimmend beleuchtete 3D Umgebungen kombinieren. Durch ein Erzeugen und Kombinieren mehrfacher FreeD Objekte aus mehrfachen Fotografien und mehrfachen bzw. mehreren Quellen und Texturen könnten FreeD Anwender leicht komplexe, einzigartige, übereinstimmend beleuchtete, realistisch aussehende, 3D Umgebungen (Welten) zur Verwendung in Unterhaltungs- und Spielanwendungen erstellen.
  • Die Schatten selbst könnten die Charakterisierung der Beleuchtung verbessern und könnten weiters zusätzliche Information über die Objekte zur Verfügung stellen. Menschliche Wesen leiten häufig die Gestalten von Objekten aus den Schatten ab, die die Objekte auf andere Oberflächen werfen. Wenn die Intensität und Richtung der Beleuchtung für ein Objekt bekannt sind, dann könnte es möglich sein, die Gestalt eines Objekts aus seinem Schatten genau abzuleiten und zu modellieren.
  • 10.8 Direktes Berechnen von Bildfeldwinkel und Kamerazielpunkt
  • FreeD ist bereits erfolgreich beim Verstecken der Komplexität von 3D Technologie vor dem gewöhnlichen nichttechnischen Anwender. Der Anwender, welcher durch Ziehen der Käfig-Ziehpunkte über die Ecken eines abgebildeten Kastens wechselwirkt, muß nicht irgendeine der zugrundeliegenden projektiven Geometrie kennen, welche die Größe und Gestalt des Käfigs verändert, sobald bzw. wenn die Ziehpunkte bewegt werden. Jedoch etwas Komplexität "leckt" an zwei Stel len zu der Anwenderschnittstelle "durch": (1) die Bestimmung des Bildfeldwinkels der Kamera, die zum Erzeugen des Eingabebilds verwendet wurde; und (2) die Bestimmung des Punkts auf dem Bild, wohin die Kamera gerichtet wurde (der "Mittelpunkt"). Beide, Bildfeld und zentraler (Ziel-) Punkt sind entscheidende Parameter für die FreeD zugrundeliegende Mathematik. Sie sind in einigen Fällen essentiell, um das Passen bzw. Fitten des Käfigs (Formatvorlage) über das 2D Bild zu optimieren.
  • Anwender, die in Optik und Fotografie technisch bewandert sind, verstehen augenblicklich die Bedeutung dieser Parameter und verwenden diese. Naivere Anwender sehen nur, daß der Käfig "nicht ganz paßt" und denken, etwas stimmt nicht mit FreeD. FreeD könnte den naiven bzw. ahnungslosen Anwendern helfen, indem die Berechnung von Bildfeldwinkel und zentralen bzw. Mittelpunkt so viel wie möglich automatisiert wird. Ein Paar von Strategien folgt.
  • 10.8.1 Spezifizieren mehrerer Regel- bzw. Steuerpunkte
  • Gegenwärtig spezifizieren Anwender einen 3D Kasten, indem vier Regel- bzw. Steuerziehpunkte angeordnet werden. Wenn das Bildfeld oder der Mittelpunkt für das Bild nicht korrekt ist, dann liegen die Kasteneckpunkte bzw. -scheitel, welche nicht durch Regel- bzw. Steuerpunkte abgedeckt werden, nicht über dem Oberteil bzw. der Spitze der Scheitel in dem Bild. Jedoch könnte FreeD dem Anwender gestatten, die Anordnung von einem oder mehreren zusätzlichen Kasteneckpunkten auf dem Bild anzuzeigen. FreeD würde dann das Bildfeld und den Zielpunkt variieren, um einen Kasten zu erzeugen, dessen Eckpunkte sich der neuen Eingabe ebenso wie die ursprünglichen vier Eckpunkte anpassen.
  • Zu diesem Zeitpunkt ist eine Lösung einer geschlossenen Form für das Problem eines Findens des Bildfeldwinkels und Zielpunkts aus den neuen Eckpunkten nicht bekannt. Es ist nicht einmal bekannt, ob das Problem ordnungsgemäß eingegrenzt ist, so daß es eine einzigartige Lösung gibt. Es gibt jedoch eine Technik einer geschlossenen Form, um den tatsächlichen Bildfeldwinkel zu finden, wenn die Bilder der vier Eckpunkte bzw. Scheitel einer rechtwinkeligen Platte gegeben sind und der zentrale (Ziel-) Punkt gegeben ist. Da die Technik für rechtwinkelige Platten gilt, ist es keine allgemeine Lösung, ist jedoch für FreeD Kästen geeignet, da ein Kasten üblicherweise drei derartige Platten dem Anwender präsentiert. Die Technik ist:
    • 1. Berechne die Brennweite von dem Bildfeldwinkel fov: f = (Bilddiagonale/2)/(Tangens(fov/2))wobei Bilddiagonale die diagonale Abmessung von einer Ecke zur gegenüberliegenden Ecke des Bilds ist.
    • 2. Kennzeichne die Bildstellen der vier Eckpunkte A, B, C und D im Uhrzeigersinn. Berechne die N-Vektoren mA; mB, mC und mD für jeden der Punkte: mA = N[(AX, AY, f)], mB = N[(BX, BY, f)], mC = N[(CX, CY, f)], mD = N[(DX, DY, f)].wo f eine anfängliche Abschätzung der Brennweite ist, und N [...] eine Funktion ist, welche ihren Parametervektor normalisiert.
    • 3. Berechne die N-Vektoren, nAB, nBC, nCD, und nDA der Kanten, die die vier Eckpunkte verbinden: nAB = N[mA × mB], nBC = N[mB × mC], nCD = N[mC × mD], nDA = N[mD × mA].wo x das Vektorkreuzprodukt ist.
    • 4. Berechne die N-Vektoren der Verschwindungs- bzw. Fluchtpunkte der Kanten AB und CD und auch BC und DA wie folgt: m = N[nAB × nCD], m' = N[nBC × nDA]
    • 5. Berechne die korrekte Brennweite wie folgt: f' = f*(–((mx*m'x) + (my*m'y))/(m2*m'z))1/2,wo die Indizes x, y, z Komponenten der Vektoren m und m' anzeigen.
    • 6. Transformiere die neue Brennweite in einen Bildfeldwinkel: fov' = 2*arctan((Bilddiagonale/2)/f')
  • Diese Technik arbeitet gut, wenn das Bild des Kastens durch einen perspektivischen Effekt stark verzerrt ist. Jedoch wird es zunehmend ungenau, wenn der perspektivische Effekt vermindert wird. Die Technik ist auch begrenzt, da sie die Kenntnis des Kameramittel- (Ziel-)Punkts erfordert.
  • 10.8.2 Optimierung von sowohl Bildfeldwinkel wie auch Zielpunkt
  • FreeD könnte automatische Hilfe für den unerfahrenen Anwender zur Verfügung stellen, selbst, wenn sowohl der Bildfeldwinkel als auch der zentrale bzw. Mittelpunkt falsch wären, wie in einem zugeschnittenen Bild, wo der Mittelpunkt verschoben wurde. FreeD könnte auf einen verallgemeinerten Suchmechanismus zurückfallen, wie beispielsweise Hügelklettern oder genetischer Algorithmus, um das beste "Passen" bzw. den besten "Fit" zu finden. Alle derartigen Schemata maximieren einen Wert einer "Güte des Passens", welcher für Sätze von Parametern berechnet wird. Hier ist der Wert die Summe der geometrischen Abstände zwischen den vom Anwender ausgewählten Anordnungen bzw. Stellen für die Eckpunkte und den Anordnungen der Eckpunkte, welche durch FreeD berechnet sind bzw. werden.
  • 10.9 Zusätzliche Gestalten bzw. Formen
  • Die im Detail oben beschriebene Version von FreeD bietet drei grundlegende 3D Gestalten (Bildvorlagen): Kasten, Kugel und Rotationskörper (Zylinder). Anwender können leicht diskrete Kästen, Kugeln und Rotationskörper erstellen, wobei es jedoch mehr Erfahrung und Bestimmtheit erfordert, um Gestalten zu kombinieren, um komplexe Modelle, wie beispielsweise kastenähnliche Basis mit einer kuppelartigen (halbkugelförmigen) Oberseite, zu erstellen.
  • 10.9.1 Kombinieren, Extrudieren und Abrunden von Objekten
  • FreeD könnte Werkzeuge zum automatischen Kombinieren von Objekten zur Verfügung stellen. Der Anwender würde "Verbinde"-Kopplungen zwischen diskreten Objekten spezifizieren. Beispielsweise ist ein einfacher Vorschlaghammer ein länglicher Kasten mit einem langen dünnen Zylinder, der daran festgelegt ist. Der Anwender paßt den Kasten und Zylinder getrennt zusammen und sagt dann FreeD, den Kasten und Zylinder zu "verbinden". Der Kasten und der Zylinder, sobald sie verbunden sind, würden ein einzelnes 3D Objekt darstellen, an welchem FreeD Manipulationsmodus-Vorgänge angewendet werden könnten.
  • Wie oben beschrieben wurde, erlaubt es die gegenwärtige Implementierung von FreeD dem Anwender, ein Modell eines abgebildeten komplexen 3D Rotationskörper zu erstellen, indem dem Umriß eines abgebildeten komplexen Rotationskörpers (Hinzufügen scharfer und glatter Ziehpunkte nach Bedarf und dann Anordnen der Ziehpunkte geeignet, um der Gestalt des abgebildeten Objekts zu passen) gefolgt wird. Auf ähnliche Weise zu diesem Merkmal könnte FreeD verbessert werden, um die Fähigkeit zum Extrudieren von Objekten zur Verfügung zu stellen. Zuerst würde der Anwender einen Kasten oder Zylinder oder eine Kugel im Konstruktionsmodus von FreeD auswählen. Dann würde der Anwender die ausgewählte Gestalt über das zu modellierende Objekt überlagern. Der Anwender würde dann eine Seite des Objekts verfolgen bzw. nachzeichnen, indem die Ziehpunkte von FreeD über die geeigneten Kanten eingepaßt werden und scharfe oder glatte Ziehpunkte nach Notwendigkeit hinzugefügt werden. Aus diesem nachgezeichneten Querschnitt könnte FreeD die Gestalt des entsprechenden 3D Objekts ableiten.
  • Nicht-symmetrische Objekte könnten mit den "Verbinde"- und Extrusionsmöglichkeiten erzeugt werden, welche gerade beschrieben wurden.
  • Einige Gestalten sind kastenähnlich, weisen jedoch abgerundete Ecken oder abgerundete Kanten auf. Die spezifische Implementierung von FreeD erstellt automatisch nur scharfwinkelige Kästen, wobei könnte jedoch die Fähigkeit, zylindrische Gestalten nachzuzeichnen und tatsächlich abgerundete Extrusionen den Seiten von Rotationskörpern hinzuzufügen, hinzugefügt werden, um Kanten von Kästen abzurunden.
  • 10.9.2 Komplexere Gestalten
  • Einige der komplizierteren Gestalten bzw. Formen, wie beispielsweise die Gestalt eines Sessels oder eines Autos oder eines menschlichen Körpers sind bekannt und augenblicklich erkennbar. Spezialisierte Gestalten könnten in parametrischer Form modelliert werden. D. h., die allgemeinen Eigenschaften oder Attribute (Parameter) von spezialisierten Gestalten können im Voraus bekannt sein, selbst wenn jemand nicht die exakten Dimensionen bzw. Abmessungen des Objekts kennt. Beispielsweise kennt, obwohl ein Anwender nicht die exakte Gestalt eines spezifischen Autos wissen könnte bzw. muß, der Anwender allgemeine Autoparameter, wie beispielsweise die Tatsache, daß Autos vier Räder haben, alle Räder rund sind und dieselbe Größe aufweisen, die Achsen zwischen den zwei Rädern parallel sind, es vier Seiten gibt, usw. FreeD könnte auch allgemeine Autoparameter kennen und ein allgemeines "Autovorlagenbild" zur Verfügung stellen, das ein Anwender dann über ein Bild eines spezifischen bzw. bestimmten Autos einpassen könnte, um ein 3D Modell davon zu erstellen.
  • Im allgemeinen könnte FreeD Anwendern die Werkzeuge zur Verfügung stellen oder geben, um komplexe Vorlagen zu erstellen, welche mit speziellen Anwenderbedürfnissen verzahnt sind: Sessel, Tische, Vasen, Zimmer, und dgl. für Innenarchitekten; Auto- bzw. Fahrzeugkarosserien, Motoren, Räder, Windschutzscheiben, und dgl. für Autokonstrukteure; Basketballschläger, Tennisschläger, Fußballhelme, speziell geformte Bälle für Fußball, Football, Tennis und dgl. für Sportausrüstungs-Konstrukteure.
  • 11. Schlußfolgerung
  • Zusammenfassend kann ersehen werden, daß die vorliegende Erfindung den Anwender mit mächtigen bzw. leistungsfähigen und leicht zu verwendeten Techniken versieht bzw. versorgt, um schwierige Aufgaben, wie beispielsweise ein Extrahieren und Manipulieren von 3D Objekten in 2D Repräsentationen von 3D Szenen durchzuführen und modellierte 3D Objekte in 2D Repräsentationen bzw. Darstellungen von 3D Szenen anzuordnen. Wie im Detail oben besprochen wurde, kann ein Anwender durch ein einfaches Anordnen von Regel- bzw. Steuerziehpunkten über entsprechende Merkmalspunkte in dem Bild ein 3D Modell erzeugen, ohne überhaupt irgendetwas über 3D perspektivische Geometrie und Texturabbildung zu wissen. Der Anwender muß nicht den Unterschied zwischen 2D Bildbearbeitung und 3D Modellierung kennen und kann darin verharren, sich der Tatsache nicht bewußt zu sein, daß beide Aktivitäten tatsächlich ausgeführt werden.
  • Während das Obige eine vollständige Beschreibung von spezifischen Ausführungsformen der Erfindung ist, können verschiedene Modifikationen, alternative Konstruktionen und Äquivalenten bzw. Entsprechungen verwendet werden. Deshalb sollte die obige Beschreibung nicht als den Gültigkeitsbereich der Erfindung begrenzend bzw. beschränkend aufgefaßt werden, wie sie durch die Ansprüche definiert ist.

Claims (34)

  1. Ein Verfahren zum Modellieren dreidimensionaler (3D) Objekte in einer interaktiven Rechnerumgebung, wobei das Verfahren die Schritte umfaßt: (a) Anzeigen einer zweidimensionalen (2D) Darstellung einer 3D-Szene, wobei die 2D-Darstellung eine Bildebene definiert; (b) Bilden einer Zuordnung zwischen einem Satz von Steuerelementen eines modellierten 3D-Objekts und eines entsprechenden Satzes von zu der Szene gehörenden Positionen in Abhängigkeit von einer Benutzereingabe, wobei die Positionen Sollpositionen in der Szene für die Steuerelemente des modellierten 3D-Objekts darstellen; (c) Bestimmen einer Orientierung und Position des modellierten 3D-Objekts im 3D-Raum auf Grundlage der Zuordnung; und (d) Projizieren wenigstens einiger Elemente des modellierten 3D-Objekts mit der so bestimmten Orientierung und Position auf die Bildebene, um eine 2D-Darstellung des modellierten 3D-Objekts in der Szene bereitzustellen, wobei sich die Steuerelemente des modellierten 3D-Objekts an den Sollpositionen befinden.
  2. Das Verfahren gemäß Anspruch 1, wobei eine Zuordnung in Abhängigkeit von einer Benutzereingabe enthält: Spezifizieren eines Satzes von Steuerpunkten eines modellierten 3D-Objekts in Abhängigkeit von einer ersten Benutzereingabe; und Anordnen des Satzes von Steuerpunkten an zu der Szene gehörigen Positionen in Abhängigkeit von einer zweiten Benutzereingabe, wobei die Positionen Sollpositionen für die Steuerpunkte des modellierten 3D-Objekts in der Szene darstellen.
  3. Das Verfahren gemäß Anspruch 2, wobei der Satz von Steuerpunkten die minimale Anzahl von Punkten enthält, die zum eindeutigen Definieren der Form und Orientierung des modellierten 3D-Objekts im 3D-Raum erforderlich ist.
  4. Das Verfahren gemäß Anspruch 2, wobei die Schritte (b) und (c) verschachtelt sind.
  5. Das Verfahren gemäß Anspruch 2, wobei der Schritt (b) vor dem Schritt (c) ausgeführt wird.
  6. Das Verfahren gemäß Anspruch 2, wobei der Schritt (c) vor dem Schritt (b) ausgeführt wird.
  7. Das Verfahren gemäß Anspruch 2, ferner mit dem Schritt des Anzeigens einer Drahtmodelldarstellung des modellierten 3D-Objekts, der in Verbindung mit dem Schritt der Plazierung eines Satzes von Steuerpunkten ausgeführt wird.
  8. Das Verfahren gemäß Anspruch 2, wobei: das Verfahren ferner den Schritt des Anzeigens einer Drahtmodelldarstellung des modellierten 3D-Objekts mit hervorgehobenen Steuerpunkten aufweist; die erste vom Benutzer getätigte Benutzereingabe unter Verwendung eines Zeigegeräts erfolgt, um wenigstens einen hervorgehobenen Steuerpunkt von einer anfänglich angezeigten Position zu der Sollposition des Steuerpunktes zu ziehen.
  9. Das Verfahren gemäß Anspruch 1, wobei ein Bestimmen einer Orientierung und Position umfaßt: Bestimmen einer Orientierung, Form und Position des modellierten 3D-Objekts im 3D-Raum auf Grundlage der Zuordnung.
  10. Das Verfahren gemäß Anspruch 9, wobei die 2D-Darstellung des auf die Bildebene projizierten modellierten 3D-Objekts eine Anzahl von sichtbaren Oberflächenabschnitten in der Bildebene aufweist, wobei das Verfahren ferner enthält: Zuordnen von Bereichen der 2D-Darstellung zu entsprechenden sichtbaren Oberflächenabschnitten des derart projizierten, modellierten 3D-Objekts; und in Abhängigkeit von einer zusätzlichen Benutzereingabe, die ein Modifizieren wenigstens eines geometrischen Parameters des modellierten 3D-Objekts spezifiziert, anzeigen einer 2D-Darstellung des modellierten 3D-Objekts mit dem mindestens einen modifizierten geometrischen Parameter, wobei die dem modellierten 3D-Objekt zugeordneten Bereiche der 2D-Darstellung entsprechend modifiziert werden; wodurch das modellierte 3D-Objekt als abgebildetes Objekt, jedoch mit wenigstens einem modifizierten geometrischen Parameter erscheint, wenn die Steuerpunkte in Abhängigkeit von der ersten Benutzereingabe im wesentlichen auf entsprechenden Punkten des abgebildeten Objekts plaziert werden.
  11. Das Verfahren gemäß Anspruch 9, wobei die zweidimensionale (2D) Darstellung ein zweidimensionales (2D) Bitmap-Bild eines 3D-Objekts enthält, wobei ein Teil der 2D-Darstellung das 3D-Objekt darstellt, wobei die 2D-Darstellung des auf die Bildebene projizierten, modellierten 3D-Objekts eine Anzahl von sichtbaren Oberflächenabschnitten in der Bildebene aufweist, wobei das Verfahren ferner enthält: Zuordnen eines Bereichs des Bildes zu jedem sichtbaren Oberflächenabschnitt des derart projizierten, modellierten 3D-Objekts; und in Abhängigkeit von einer dritten Benutzereingabe, die ein Modifizieren wenigstens eines geometrischen Parameter des modellierten 3D-Objekts spezifiziert, anzeigen einer 2D-Darstellung des modellierten 3D-Objekts mit wenigstens einem modifizierten geometrischen Parameter, wobei die dem modellierten 3D-Objekt zugeordneten Bereiche des Bildes entsprechend modifiziert werden; wodurch das modellierte 3D-Objekt als abgebildetes Objekt, jedoch mit wenigstens einem modifizierten geometrischen Parameter erscheint, wenn die Steuerpunkte in Abhängigkeit von der ersten Benutzereingabe im wesentlichen auf die entsprechenden Punkte des abgebildeten Objekts plaziert werden.
  12. Das Verfahren gemäß Anspruch 11, wobei: das 2D-Bitmap-Bild eine Version mit geringerer Auflösung von einem ursprünglichen 2D-Bitmap-Bild ist; und das Verfahren ferner den nach Schritt (g) in Abhängigkeit von einer vierten Benutzereingabe ausgeführten Schritt umfaßt, daß die 2D-Darstellung des modellierten 3D-Objekts mit dem wenigstens einen modifizierten geometrischen Parameter mit der Auflösung des ursprünglichen 2D-Bitmap-Bilds angezeigt wird.
  13. Das Verfahren gemäß Anspruch 11, wobei: das 2D-Bitmap-Bild eine Version mit geringerer Auflösung von einem ursprünglichen 2D-Bitmap-Bild ist; und das Verfahren ferner den nach Schritt (g) in Abhängigkeit von einer vierten Benutzereingabe ausgeführten Schritt umfaßt, daß die 2D-Darstellung des modellierten 3D-Objekts mit dem wenigstens einen modifizierten geometrischen Parameter in dem ursprünglichen 2D-Bitmap-Bild und mit der Auflösung des ursprünglichen 2D-Bitmap-Bilds angezeigt wird.
  14. Das Verfahren gemäß Anspruch 13, wobei: das ursprüngliche 2D-Bitmap-Bild ein farbiges Bild ist und das in Schritt (a) angezeigte 2D-Bitmap-Bild ein Graustufenbild ist.
  15. Das Verfahren gemäß Anspruch 11, wobei der Satz von Steuerpunkten die minimale Anzahl von Punkten enthält, die zur eindeutigen Definition des modellierten 3D-Objekts erforderlich sind.
  16. Das Verfahren gemäß Anspruch 2, wobei der wenigstens eine geometrischer Parameter zu der Gruppe gehört, die aus einer Drehorientierung und geradlinigen Position besteht.
  17. Das Verfahren gemäß Anspruch 2, ferner enthaltend den zusammen mit dem Schritt das Anordnens des Satzes von Steuerpunkten ausgeführten Schritt, daß eine Drahtmodelldarstellung des modellierten 3D-Objekts angezeigt wird, wobei die Steuerpunkte hervorgehoben werden.
  18. Das Verfahren gemäß Anspruch 1, wobei die zweidimensionale (2D) Darstellung ein zweidimensionales (2D) Bitmap-Bild enthält, welches ein 3D-Objekt darstellt, wobei ein Teil des Bildes das 3D-Objekt darstellt und Bilden einer Zuordnung, umfassend: Anordnen eines Satzes von Steuerpunkten an zu dem Bild gehörigen Positionen in Abhängigkeit von einer ersten Benutzereingabe, wobei die Positionen ein modelliertes 3D-Objekt eines bestimmten Typs kennzeichnen, wobei das modellierte 3D-Objekt eine Anzahl von sichtbaren Oberflächenabschnitten aufweist; und Zuordnen eines Bereichs des Bildes zu jedem Oberflächenabschnitt des modellierten 3D-Objekts; wobei das Verfahren in Abhängigkeit von einer zweiten Benutzereingabe, die ein Modifizieren wenigstens eines geometrischen Parameters des modellierten 3D-Objekts spezifiziert, ferner aufweist ein Anzeigen einer 2D-Darstellung des modellierten 3D-Objekts mit wenigstens einem modifizierten geometrischen Parameter, wobei die dem modellierten 3D-Objekt zugeordneten Bereiche des Bildes entsprechend modifiziert werden; wodurch dann, wenn die Steuerpunkte in Abhängigkeit von der ersten Benutzereingabe im wesentlichen an entsprechenden Punkten des abgebildeten Objekts plaziert sind, das modellierte 3D-Objekt in Abhängigkeit von der zweiten Benutzereingabe als abgebildetes Objekt erscheint, jedoch mit wenigstens einem geänderten geometrischen Parameter.
  19. Das Verfahren gemäß Anspruch 18, wobei der Satz von Steuerpunkten die minimale Anzahl von Steuerpunkten enthält, die zur eindeutigen Definition der Form und der Orientierung des modellierten 3D-Objekts im 3D-Raum erforderlich ist.
  20. Das Verfahren gemäß Anspruch 18, wobei der wenigstens eine geometrische Parameter zu der Gruppe gehört, die aus einer Drehorientierung und einer geradlinigen Position besteht.
  21. Das Verfahren gemäß Anspruch 18, ferner den in Verbindung mit dem Schritt der Plazierung eines Satzes von Steuerpunkten ausgeführten Schritt, daß eine Drahtmodelldarstellung des modellierten 3D-Objekts angezeigt wird.
  22. Das Verfahren gemäß Anspruch 18, wobei das modellierte 3D-Objekt zu der Gruppe gehört, die aus einem Extrusionskörper, beispielsweise rechtwinkligen Körper, und einem Rotationskörper, beispielsweise Ellipsoid oder Zylinder, besteht.
  23. Das Verfahren gemäß Anspruch 18, wobei das Bitmap-Bild eine digitalisierte Fotografie des Objekts enthält.
  24. Das Verfahren gemäß Anspruch 18, wobei das Bitmap-Bild eine gerenderte 2D-Projektion eines 3D-Computermodells des Objekts enthält.
  25. Das Verfahren gemäß Anspruch 18, wobei das Bitmap-Bild eine Strichzeichnung des Objekts enthält.
  26. Das Verfahren gemäß Anspruch 1, wobei ein Bestimmen einer Orientierung und Position ein Erstellen eines Modells eines 3D-Objekts, bezeichnet als modelliertes 3D-Objekt, eines bestimmten Typs enthält, wobei das modellierte 3D-Objekt durch einen Satz von Steuerelementen mit jeweils Koordinaten in drei Dimensionen gekennzeichnet ist, wobei die jeweiligen Koordinaten eine 3D-Position und Orientierung des modellierten 3D-Objekts und einen Satz von Verhältnissen bestimmen, wobei das Verfahren ferner enthält: Aufnehmen einer eine Verschiebung in der Bildebene bestimmenden Benutzereingabe wenigstens eines Steuerelements, um einen modifizierten Satz von projizierten Steuerelementen zu spezifizieren; Bestimmen, ob der modifizierte Satz von projizierten Elementen mit einer Projektion eines modellierten Objekts des spezifizierten Typs mit möglicherweise modifizierter Position, Orientierung und Proportionen auf der Bildebene konsistent ist; und sofern dies der Fall ist, Bestimmen neuer 3D-Koordinaten für das modellierte 3D-Objekt, die mit dem modifizierten Satz von projizierten Elementen konsistent sind, Projizieren des modellierten 3D-Objekts mit den neuen 3D-Koordinaten auf die Bildebene, um einen neuen Satz von projizierten Elementen zu definieren, und Anzeigen des neuen Satzes von projizierten Elementen.
  27. Das Verfahren gemäß Anspruch 26, wobei: die Steuerelemente Steuerpunkte sind; und wobei die eine Verschiebung spezifizierende Benutzereingabe Signale umfaßt, die beim Ziehen eines der Steuerpunkte durch den Benutzer mittels eines Zeigegeräts erzeugt werden.
  28. Das Verfahren gemäß Anspruch 26, wobei der Satz von Steuerpunkten die minimale Anzahl von Punkten enthält, die zur eindeutigen Definition der Form und Orientierung des modellierten 3D-Objekts im 3D-Raum erforderlich sind.
  29. Das Verfahren gemäß Anspruch 26, wobei der Satz von Steuerpunkten mehr als die minimale Anzahl von Punkten enthält, die zur eindeutigen Definition des modellierten 3D-Objekts erforderlich sind.
  30. Das Verfahren gemäß Anspruch 26, wobei der Schritt der Anzeige des Satzes von projizierten Kanten und projizierten Steuerpunkten eine Anzeige einer Drahtmodelldarstellung des modellierten 3D-Objekts enthält.
  31. Das Verfahren gemäß Anspruch 9, wobei die 2D-Darstellung ein ein 3D-Objekt zeigendes 2D-Bild enthält, wobei ein Bilden einer Zuordnung umfaßt: Anzeigen eines Drahtmodelldarstellungs-Käfigs, der ein auf die Bildebene projiziertes, modelliertes 3D-Objekt darstellt, wobei der Käfig einen Satz von Steuerelementen aufweist; und Bilden einer Zuordnung zwischen dem Satz der Steuerelemente des Käfigs und einem entsprechenden Satz von Positionen in der Bildebene in Abhängigkeit von einer Benutzereingabe, wobei die Positionen Sollpositionen in dem Bild für die Steuerelemente des modellierten 3D-Objekts darstellen.
  32. Das Verfahren gemäß Anspruch 31, ferner umfassend: Projizieren wenigstens einiger Elemente und einiger Oberflächenabschnitte des modellierten 3D-Objekts mit der auf diese Weise bestimmten Orientierung und Position auf die Bildebene, wobei das derart projizierte, modellierte 3D-Objekt eine Anzahl von sichtbaren Oberflächenabschnitten in der Bildebene aufweist; Zuordnen von Bereichen des Bildes zu entsprechenden sichtbaren Oberflächenabschnitten des derart projizierten, modellierten 3D-Objekts; und in Abhängigkeit von einer zusätzlichen Benutzereingabe, die ein Modifizieren wenigstens eines geometrischen Parameters des modellierten 3D-Objekts spezifiziert, Anzeigen einer 2D-Darstellung des modellierten 3D-Objekts mit wenigstens einem modifizierten geometrischen Parameter, wobei die dem modellierten 3D-Objekt zugeordneten Bereiche des Bildes entsprechend modifiziert werden; wodurch dann, wenn die Steuerelemente in Abhängigkeit von der ersten Benutzereingabe im wesentlichen an entsprechenden Elemente des abgebildeten Objekts plaziert wurden, das modellierte 3D-Objekt in Abhängigkeit von der weiteren Benutzereingabe als abgebildetes Objekt erscheint, jedoch mit dem wenigstens einen modifizierten geometrischen Parameter.
  33. Das Verfahren gemäß Anspruch 32, wobei der Satz von Steuerelementen aus charakteristischen Punkten des modellierten 3D-Objekts besteht.
  34. Das Verfahren gemäß Anspruch 33, wobei der Satz von Punkten die minimaler Anzahl von Punkten enthält, die zur eindeutigen Definition von Form und der Orientierung des modellierten 3D-Objekts im 3D-Raum erforderlich sind.
DE69732663T 1996-06-04 1997-06-03 Verfahren zur erzeugung und änderung von 3d modellen und korrelation von solchen modellen mit 2d bildern Expired - Lifetime DE69732663T2 (de)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US1940096P 1996-06-04 1996-06-04
US19400P 1996-06-04
US4706297P 1997-05-19 1997-05-19
US47062P 1997-05-19
US86241797A 1997-05-23 1997-05-23
US862417 1997-05-23
US86701397A 1997-06-02 1997-06-02
US867013 1997-06-02
PCT/US1997/009627 WO1997046975A1 (en) 1996-06-04 1997-06-03 Techniques for creating and modifying 3d models and correlating such models with 2d pictures

Publications (2)

Publication Number Publication Date
DE69732663D1 DE69732663D1 (de) 2005-04-07
DE69732663T2 true DE69732663T2 (de) 2005-12-29

Family

ID=27486845

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69732663T Expired - Lifetime DE69732663T2 (de) 1996-06-04 1997-06-03 Verfahren zur erzeugung und änderung von 3d modellen und korrelation von solchen modellen mit 2d bildern

Country Status (5)

Country Link
EP (1) EP1008112B1 (de)
JP (1) JP2002513480A (de)
AU (1) AU3229497A (de)
DE (1) DE69732663T2 (de)
WO (1) WO1997046975A1 (de)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6686918B1 (en) * 1997-08-01 2004-02-03 Avid Technology, Inc. Method and system for editing or modifying 3D animations in a non-linear editing environment
CN1182489C (zh) * 1998-06-30 2004-12-29 西门子公司 制作虚拟设备模型的装置和方法
SE9803996D0 (sv) * 1998-11-20 1998-11-20 Opticore Ab Metod och anordning för skapande och modifierande av digitala 3D-modeller
US8332401B2 (en) 2004-10-01 2012-12-11 Ricoh Co., Ltd Method and system for position-based image matching in a mixed media environment
US8510283B2 (en) 2006-07-31 2013-08-13 Ricoh Co., Ltd. Automatic adaption of an image recognition system to image capture devices
US8825682B2 (en) 2006-07-31 2014-09-02 Ricoh Co., Ltd. Architecture for mixed media reality retrieval of locations and registration of images
US9171202B2 (en) 2005-08-23 2015-10-27 Ricoh Co., Ltd. Data organization and access for mixed media document system
US8335789B2 (en) 2004-10-01 2012-12-18 Ricoh Co., Ltd. Method and system for document fingerprint matching in a mixed media environment
US8868555B2 (en) 2006-07-31 2014-10-21 Ricoh Co., Ltd. Computation of a recongnizability score (quality predictor) for image retrieval
US9373029B2 (en) 2007-07-11 2016-06-21 Ricoh Co., Ltd. Invisible junction feature recognition for document security or annotation
US8184155B2 (en) 2007-07-11 2012-05-22 Ricoh Co. Ltd. Recognition and tracking using invisible junctions
US8156115B1 (en) 2007-07-11 2012-04-10 Ricoh Co. Ltd. Document-based networking with mixed media reality
US8838591B2 (en) 2005-08-23 2014-09-16 Ricoh Co., Ltd. Embedding hot spots in electronic documents
US8385589B2 (en) 2008-05-15 2013-02-26 Berna Erol Web-based content detection in images, extraction and recognition
US8369655B2 (en) 2006-07-31 2013-02-05 Ricoh Co., Ltd. Mixed media reality recognition using multiple specialized indexes
US8195659B2 (en) 2005-08-23 2012-06-05 Ricoh Co. Ltd. Integration and use of mixed media documents
US8949287B2 (en) 2005-08-23 2015-02-03 Ricoh Co., Ltd. Embedding hot spots in imaged documents
US8856108B2 (en) 2006-07-31 2014-10-07 Ricoh Co., Ltd. Combining results of image retrieval processes
US9530050B1 (en) 2007-07-11 2016-12-27 Ricoh Co., Ltd. Document annotation sharing
US8176054B2 (en) 2007-07-12 2012-05-08 Ricoh Co. Ltd Retrieving electronic documents by converting them to synthetic text
US9384619B2 (en) 2006-07-31 2016-07-05 Ricoh Co., Ltd. Searching media content for objects specified using identifiers
US8276088B2 (en) 2007-07-11 2012-09-25 Ricoh Co., Ltd. User interface for three-dimensional navigation
US8600989B2 (en) 2004-10-01 2013-12-03 Ricoh Co., Ltd. Method and system for image matching in a mixed media environment
US8156427B2 (en) 2005-08-23 2012-04-10 Ricoh Co. Ltd. User interface for mixed media reality
US7702673B2 (en) 2004-10-01 2010-04-20 Ricoh Co., Ltd. System and methods for creation and use of a mixed media environment
US8144921B2 (en) 2007-07-11 2012-03-27 Ricoh Co., Ltd. Information retrieval using invisible junctions and geometric constraints
US8156116B2 (en) 2006-07-31 2012-04-10 Ricoh Co., Ltd Dynamic presentation of targeted information in a mixed media reality recognition system
US9405751B2 (en) 2005-08-23 2016-08-02 Ricoh Co., Ltd. Database for mixed media document system
US8521737B2 (en) 2004-10-01 2013-08-27 Ricoh Co., Ltd. Method and system for multi-tier image matching in a mixed media environment
US9176984B2 (en) 2006-07-31 2015-11-03 Ricoh Co., Ltd Mixed media reality retrieval of differentially-weighted links
US9063952B2 (en) 2006-07-31 2015-06-23 Ricoh Co., Ltd. Mixed media reality recognition with image tracking
US9020966B2 (en) 2006-07-31 2015-04-28 Ricoh Co., Ltd. Client device for interacting with a mixed media reality recognition system
US8201076B2 (en) 2006-07-31 2012-06-12 Ricoh Co., Ltd. Capturing symbolic information from documents upon printing
US8676810B2 (en) 2006-07-31 2014-03-18 Ricoh Co., Ltd. Multiple index mixed media reality recognition using unequal priority indexes
US8489987B2 (en) 2006-07-31 2013-07-16 Ricoh Co., Ltd. Monitoring and analyzing creation and usage of visual content using image and hotspot interaction
US8624962B2 (en) 2009-02-02 2014-01-07 Ydreams—Informatica, S.A. Ydreams Systems and methods for simulating three-dimensional virtual interactions from two-dimensional camera images
US8385660B2 (en) 2009-06-24 2013-02-26 Ricoh Co., Ltd. Mixed media reality indexing and retrieval for repeated content
US20130124148A1 (en) * 2009-08-21 2013-05-16 Hailin Jin System and Method for Generating Editable Constraints for Image-based Models
US9058331B2 (en) 2011-07-27 2015-06-16 Ricoh Co., Ltd. Generating a conversation in a social network based on visual search results
US9135710B2 (en) 2012-11-30 2015-09-15 Adobe Systems Incorporated Depth map stereo correspondence techniques
US10455219B2 (en) 2012-11-30 2019-10-22 Adobe Inc. Stereo correspondence and depth sensors
US9208547B2 (en) 2012-12-19 2015-12-08 Adobe Systems Incorporated Stereo correspondence smoothness tool
US10249052B2 (en) 2012-12-19 2019-04-02 Adobe Systems Incorporated Stereo correspondence model fitting
DE102014200384A1 (de) 2013-06-03 2014-12-04 Volkswagen Aktiengesellschaft Verfahren zum Herstellen von komplexen Produkten, insbesondere von Kraftfahrzeugen
US10234964B2 (en) 2016-12-19 2019-03-19 Wacom Co., Ltd. Image processing apparatus
IT201700066749A1 (it) * 2017-06-15 2018-12-15 Gianluigi Palka Metodo di elaborazione di immagini di elementi strutturali e/o architettonici e/o urbanistici e/o geografici

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4925294A (en) * 1986-12-17 1990-05-15 Geshwind David M Method to convert two dimensional motion pictures for three-dimensional systems
US4888713B1 (en) * 1986-09-05 1993-10-12 Cdi Technologies, Inc. Surface detail mapping system
US5255352A (en) * 1989-08-03 1993-10-19 Computer Design, Inc. Mapping of two-dimensional surface detail on three-dimensional surfaces
US5533177A (en) * 1990-10-24 1996-07-02 Siemens Aktiengesellschaft Method for detecting and estimating the spatial position of objects from a two-dimensional image
US5633995A (en) * 1991-06-19 1997-05-27 Martin Marietta Corporation Camera system and methods for extracting 3D model of viewed object
US5511153A (en) * 1994-01-18 1996-04-23 Massachusetts Institute Of Technology Method and apparatus for three-dimensional, textured models from plural video images

Also Published As

Publication number Publication date
JP2002513480A (ja) 2002-05-08
DE69732663D1 (de) 2005-04-07
EP1008112A1 (de) 2000-06-14
WO1997046975A1 (en) 1997-12-11
EP1008112B1 (de) 2005-03-02
AU3229497A (en) 1998-01-05
EP1008112A4 (de) 2000-06-14

Similar Documents

Publication Publication Date Title
DE69732663T2 (de) Verfahren zur erzeugung und änderung von 3d modellen und korrelation von solchen modellen mit 2d bildern
DE60133386T2 (de) Vorrichtung und verfahren zur anzeige eines ziels mittels bildverarbeitung ohne drei dimensionales modellieren
DE102020000810A1 (de) 3D-Objektrekonstruktion unter Nutzung einer fotometrischen Netzdarstellung
US6529206B1 (en) Image processing apparatus and method, and medium therefor
US6434277B1 (en) Image processing apparatus and method, and medium therefor
DE69129712T2 (de) Arbeitsraumanzeigen
DE112004000377B4 (de) Verfahren und Vorrichtung Bildsegmentierung in einer dreidimensionalen Arbeitsumgebung
EP2206090B1 (de) Verfahren und vorrichtung zum darstellen eines virtuellen objekts in einer realen umgebung
DE60205662T2 (de) Vorrichtung und Verfahren zur Berechnung einer Position einer Anzeige
DE60026197T2 (de) Detailgerichtete hierarchische Distanzfelder in der Objektmodellierung
JP4981135B2 (ja) 斜めモザイク画像の作成方法
DE60100452T2 (de) Dynamische einstellung von muster zum pixel filterung in antwort auf benutzereingang und/oder sensoreingang
US7148899B2 (en) Texture mapping 3D objects
US7739623B2 (en) Interactive 3D data editing via 2D graphical drawing tools
DE69807479T2 (de) Erzeugung eines Bildes eines dreidimensionalen Objekts
DE102017009276A1 (de) Erzeugen eines dreidimensionalen modells aus einem gescannten gegenstand
DE69915901T2 (de) Bildverarbeitungsgerät
DE69033865T2 (de) Display hierarchischer dreidimensionaler Strukturen
DE69924699T2 (de) Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten
DE102007045834A1 (de) Verfahren und Vorrichtung zum Darstellen eines virtuellen Objekts in einer realen Umgebung
DE202015009181U1 (de) Überblendung zwischen Straßenansicht und Erdansicht
DE19906995A1 (de) Erzeugen von Anpaßdaten für einen virtuellen Szenenaufbau
DE102017012116A1 (de) Vorschauerzeugung aus panoramischen Bildern
DE69924230T2 (de) Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten
EP2528042A1 (de) Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition