"Relief" bzw. Heighmap Metaballs
Verfasst: 05.10.2015, 19:02
Hallo,
ich versuche gerade (noch ganz am Anfang) effiziente Metaballs, die in einer Ebene liegen zu Rendern. Z.b. eine Oberfläche mit vielen Wassertropfen darauf.
Bisher sieht das wie folgt aus: Die Mittelpunkte aller Tropfen werden mit ihrem Durchmesser als Helligkeit codiert in eine Textur geschrieben. Diese Textur wird jetzt einfach weichgezeichnet, so dass ich eine Art Dichte der Tropfen erhalte.
Da Metaballs ja eine Oberfläche zu einem bestimmten Schwellwert einer Feldstärke sind, beinhaltet diese Textur jetzt praktisch den Querschnitt von dieser Feldstärke in der Oberflächenebene. Wenn ich diese Textur nur mit einem Schwellwert in schwarz / weiss trenne, habe ich schöne 2D-Metaballs.
Jetzt möchte ich aber einen feinen Mesh (erstmal nur flaches Gitter) entsprechend dem Feld zu echten 3D-Strukturen formen. Ein einzelnes, kreisrund auslaufendes Feld soll dabei möglichst wie ein Tropfen ein Kugelstück auf der Oberfläche bilden. Wo das Feld unter dem Schwellwert liegt, bleibt die Oberfläche eben.
Muss ich die Vertices jetzt nur in der Oberflächen-Normalen verschieben, und was für eine Formel braucht man da? Das Feld nimmt ja etwa mit 1/x^2 zum Mittelpunkt einer Kugel ab, die Höhe der Kugeloberfläche über der Grundlage ist aber gerade am Rand sehr steil... Oder macht es vielleicht Sinn, die Vertices auch in anderen Richtungen vom Kugelmittelpunkt weg zu verschieben? Dann könnten ja sogar Unterschneidungen enstehen, so wie Wasser das auf Fett abperlt... wenn man das nicht macht, kann man ja immerhin auch schon bis fast 90 Grad steile Flächen, also fast Halbkugeln erreichen.
ich versuche gerade (noch ganz am Anfang) effiziente Metaballs, die in einer Ebene liegen zu Rendern. Z.b. eine Oberfläche mit vielen Wassertropfen darauf.
Bisher sieht das wie folgt aus: Die Mittelpunkte aller Tropfen werden mit ihrem Durchmesser als Helligkeit codiert in eine Textur geschrieben. Diese Textur wird jetzt einfach weichgezeichnet, so dass ich eine Art Dichte der Tropfen erhalte.
Da Metaballs ja eine Oberfläche zu einem bestimmten Schwellwert einer Feldstärke sind, beinhaltet diese Textur jetzt praktisch den Querschnitt von dieser Feldstärke in der Oberflächenebene. Wenn ich diese Textur nur mit einem Schwellwert in schwarz / weiss trenne, habe ich schöne 2D-Metaballs.
Jetzt möchte ich aber einen feinen Mesh (erstmal nur flaches Gitter) entsprechend dem Feld zu echten 3D-Strukturen formen. Ein einzelnes, kreisrund auslaufendes Feld soll dabei möglichst wie ein Tropfen ein Kugelstück auf der Oberfläche bilden. Wo das Feld unter dem Schwellwert liegt, bleibt die Oberfläche eben.
Muss ich die Vertices jetzt nur in der Oberflächen-Normalen verschieben, und was für eine Formel braucht man da? Das Feld nimmt ja etwa mit 1/x^2 zum Mittelpunkt einer Kugel ab, die Höhe der Kugeloberfläche über der Grundlage ist aber gerade am Rand sehr steil... Oder macht es vielleicht Sinn, die Vertices auch in anderen Richtungen vom Kugelmittelpunkt weg zu verschieben? Dann könnten ja sogar Unterschneidungen enstehen, so wie Wasser das auf Fett abperlt... wenn man das nicht macht, kann man ja immerhin auch schon bis fast 90 Grad steile Flächen, also fast Halbkugeln erreichen.