2016-07-26 2 views
0

Ich verwende OpenMesh, um einige Mesh-Objekte zu vermessen/zu verwalten. Mit unterteilen/dezimieren/glatt und anderen Tools von OpenFlipper, kann ich die Mesh-Topologie ändern.Gibt es eine Möglichkeit, Scheitelpunktfarben mit OpenMesh neu zu projizieren/interpolieren?

Dies führt jedoch dazu, dass Vertex-Farben ihre Bedeutung verlieren, da neue Vertices alle eine schwarze Farbe haben und keine Interpolation erfolgt, wenn sich die Mesh-Topologie ändert, was zu visuellen Artefakten führt.

Gibt es eine Möglichkeit, OpenMesh anzuweisen, Scheitelpunktfarben zurück auf das alte Netz zu projizieren, um die Scheitelpunktfarbe zu interpolieren? Wenn nicht, was wäre ein guter Weg, es manuell zu tun? Gibt es einen Stand der Technik für die Vertex-Rückprojektion?

Antwort

2

In OpenFlipper mit requestTriangleBsp() können Sie eine BSP-Struktur für Ihr Original-Mesh-Objekt anfordern. (Sie müssen eine Kopie Ihres ursprünglichen Netzes behalten, solange Sie diesen BSP-Baum verwenden möchten.) Wenn Sie einen Punkt auf Ihr ursprüngliches Netz projizieren möchten, können Sie anschließend die Mitgliederfunktion nearest() in der BSP-Struktur der Reihe nach verwenden um dem gelieferten Punkt das nächste Gesicht zu geben. Danach geht es nur darum, Ihren Punkt in dieses Gesicht zu projizieren, baryzentrische Koordinaten zu berechnen und die Eckpunktfarben zu interpolieren.

+0

Mein Tag gemacht. Klappt wunderbar. – Lake

Verwandte Themen