2010-03-02 6 views
5

Ich entwickle gerade eine Visualisierungsmaschine für das Unternehmen, für das ich arbeite. Wir erstellen Abziehbilder für die Außenseite von Flugzeugen. Daher möchten wir in der Lage sein, die Abziehbilder an den von uns unterstützten Flugzeugen zu visualisieren.Physikalisch realistische Abziehbilder

Also hier ist das Problem: Im wirklichen Leben, wenn ich die Aufkleber an der Außenseite eines Flugzeugs anwendete, zahle ich eine Ankerposition aus (sagen wir in der Mitte der linken Seite des Rumpfes) und dann erarbeiten von dort aus, so dass der Aufkleber sich nach Belieben um den Rumpf des Flugzeugs wickeln kann. Nun, natürlich, wir sind ein 2D-Abziehbild "Bild" auf eine 3D-Oberfläche, so dass es einige Verzerrung sein wird, wie es um die Haut des Flugzeugs wickelt, aber das ist zu erwarten und im ursprünglichen Design berücksichtigt.

Ich stehe fest, versuchen, dies in 3D, jedoch zu reproduzieren. Ich habe die folgenden Methoden ausprobiert:

UV Mapping - Auspacken eines Modells so komplex wie das, was wir haben, wird extrem schwierig sein und scheint ein bisschen übertrieben. Die Seite des Flugzeugs ist zu flach nah, so scheint es, dass eine einfache „Abziehbild projection“ Methode besser

Cube Mapping funktionieren würde - Das nahe kommt, wirklich ganz in der Nähe, aber, wie das Abziehbild wapping auf die Gesichter auf die Seite des Flugzeugs, an einem Punkt werden die Gesichter auf der Oberseite des Modells beginnen, auf die Oberseite der Würfelkarte abzubilden ... und dann werden wir scheren .....

Irgendwelche Ideen? Was ist der beste Weg, um dies zu tun, ich bin nicht auf OpenGL vs DirectX an diesem Punkt gesetzt, so eine Antwort von beiden würde gut funktionieren.

+0

Hier ist ein ausgezeichnetes Blog-Artikel über die Konzepte dahinter: http://blog.wolfire.com/2009/06/how-to-project-decals/ – Ricket

Antwort

5

Vielleicht vermisse ich etwas offensichtlich .. aber können Sie nicht einfach projective texture mapping? verwenden.

Natürlich ist der Nachteil das möglicherweise übermäßige Verziehen, da der Winkel zwischen Ihrem Projekt und der Flächennormale sich 90 Grad nähert.

Darüber hinaus ist UV-Entpacken so ein schlechter Plan? Vorausgesetzt, die Textur des Modells ist nicht verzerrt, wäre dies eine ziemlich einfache Lösung. Microsoft bietet ein sehr hilfreiches Tool zum Auspacken here.

+1

Eigentlich viel das ist ziemlich was ich am Ende gehen mit. In Blender konnte ich das modellieren und es funktioniert super. Wahr gibt es an der Spitze des Modells einige Verwerfungen, aber ich werde jede Seite des Modells separat Das Problem mit UV Abwickeln Textur ist, dass es sehr schwer ist, um es zu bekommen, genau das „reale Welt“ Abziehbilder entspricht. Wenn Sie ein Modell auf ein Modell legen, nehmen Sie kein Messer und schneiden es so, dass es zu den Nähten der UV-Verpackung passt ... oder zumindest sollten Sie es nicht tun. Wie auch immer, es sieht so aus, als würde das obige Beispiel großartig funktionieren. –

1

Ich würde empfehlen, eine cylindrical texture map zu verwenden. Vorausgesetzt, du versuchst nicht über eine Kante abzubilden (dh auf den Flügel usw.), sollte das sehr gut funktionieren. Für ein Abziehbild am Rumpf sollte dies perfekt funktionieren und sehr einfach zu implementieren sein.

-1

Ich brauche mindestens 15 Zeichen und Ptex ist nur 4. Aber es ist alles, was Sie wissen müssen.

0

Ich glaube, dass der Stand der Technik auf dieser Art der Abziehbild Platzierung Ryan Schmidt ExpMap Koordinaten sind. Ein bisschen Mesh-Operationen sind beteiligt, aber sie sind keineswegs schwierig zu implementieren. Hier ist ein Link zum SIGGRAPH-Papier: http://www.unknownroad.com/publications/ExpMapSIGGRAPH06.pdf

1

Was Sie wollen, ist eine UV-Koordinaten, die geodätischen Abständen entsprechen. Ein geodätischer Abstand ist im Wesentlichen der Abstand auf der Oberfläche im Gegensatz zum euklidischen Abstand, der der kürzeste Abstand zwischen zwei Punkten ist (wenn er das Modell durchläuft). Eine globale Lösung, um eine geodätische Karte zu erstellen, ist ziemlich komplex. Allerdings kann es lokal einfacher sein ...

Da Sie einen Aufkleber auf eine Oberfläche, die mehr oder weniger flach oder zumindest ein wenig gekrümmt ist, ohne wirklich Kräne und Kerben, können Sie eine einfache Lösung anwenden. Ich bin mir nicht sicher, ob es richtig funktioniert, aber Sie haben bereits selbst an die Lösung gedacht.

Sie könnten einfach einen Scheitelpunkt in Ihrem Gitter nehmen und A * oder von diesem Scheitelpunkt zum nächsten Scheitelpunkt marschieren, während Sie den geodätischen Abstand zählen und die UVs auf diese Weise berechnen. Es wird nicht ganz genau sein, aber es könnte in Ihrem Fall gut genug sein.

Es gibt auch robustere Möglichkeiten, dies mit Multidimensionale Skalierung wie ein Abflachen zu tun. Und wenn die Topologie Ihrer Oberfläche mehr oder weniger einer Ebene ähnelt, wird sie sehr gut funktionieren.

http://en.wikipedia.org/wiki/Multidimensional_scaling