I have not tried it myself, but you probably need to generate a Bezier curve between three points in Godot, there is a page on the documentation that might be helpful for this. Once you have the curve, you should just need to then create a mesh that follows that curve.
The hard part might be calculating the middle point, since it needs to form a triangle. You could try something like this, which might work (based on code from the documentation, untested):
func _get_bezier_position_from_two_points(point_one: Vector3, point_two: Vector3, point_on_curve: float):
var point_middle = ((point_one + point_two) / 2)
# Add some distance to the middle point so all three points form a triangle
var point_middle_height = 0.75
point_middle += (Vector3.UP * point_middle_height)
var q0 = point_one.linear_interpolate(point_middle, point_on_curve)
var q1 = point_middle.linear_interpolate(point_two, point_on_curve)
var result = q0.linear_interpolate(q1, point_on_curve)
return result
And then you could use these points, in theory at least, with something like an ImmediateGeometry node. The documentation has a page showing how to generate a triangle with the ImmediateGeometry node. You might be able to use PRIMITIVE LINES
as the mesh type, which might make it easier to draw the Bezier curve.
Hopefully this helps a bit! It looks like it is doable in Godot, but it might take some trial and error to find a solution.