Sorry, I realize it doesn't show the whole thread if you're not logged in on Reddit (there is a continue thread button).
Here's the code anyhow that way it's saved on the forum.
func make_wire_complex():
var array = mesh_node.mesh.surface_get_arrays(0)
var wire_array = []
wire_array.resize(ArrayMesh.ARRAY_MAX)
var mdt = MeshDataTool.new()
mdt.create_from_surface(mesh_node.mesh, 0)
var vertices = PoolVector3Array()
for j in range(mdt.get_face_count()):
var vert_0 = mdt.get_face_vertex(j, 0)
var vert_1 = mdt.get_face_vertex(j, 1)
var vert_2 = mdt.get_face_vertex(j, 2)
var pos_0 = mdt.get_vertex(vert_0)
var pos_1 = mdt.get_vertex(vert_1)
var pos_2 = mdt.get_vertex(vert_2)
var sides = get_sides(pos_0, pos_1, pos_2)
for side in sides:
vertices.push_back(side)
wire_array[ArrayMesh.ARRAY_VERTEX] = vertices
mesh_node.mesh = ArrayMesh.new()
mesh_node.mesh.add_surface_from_arrays(Mesh.PRIMITIVE_LINES, wire_array)
mesh_node.set_surface_material(0, mesh_mat)
func get_sides(pt_0, pt_1, pt_2):
var dist_01 = (pt_0 - pt_1).length()
var dist_12 = (pt_1 - pt_2).length()
var dist_20 = (pt_2 - pt_0).length()
var ret = []
if dist_01 > dist_12 and dist_01 > dist_20:
ret.push_back(pt_1)
ret.push_back(pt_2)
ret.push_back(pt_2)
ret.push_back(pt_0)
elif dist_12 > dist_01 and dist_12 > dist_20:
ret.push_back(pt_0)
ret.push_back(pt_1)
ret.push_back(pt_2)
ret.push_back(pt_0)
else:
ret.push_back(pt_0)
ret.push_back(pt_1)
ret.push_back(pt_1)
ret.push_back(pt_2)
return ret
shader_type spatial;
render_mode unshaded, skip_vertex_transform;
uniform float time;
const float one = 1.0;
const float PI = 3.14159265359;
const float TWO_PI = 2.0 * PI;
const vec4 line_color = vec4(0.0, 1.0, 0.0, 1.0);
const vec4 background_color = vec4(0.0, 0.0, 0.0, 1.0);
void vertex() {
float offset = mod(TIME * 1.5, TWO_PI);
float offset2 = mod(TIME * 2.0, TWO_PI);
VERTEX.z += mod(TIME * 2.0, 1.0);
VERTEX.y = sin(VERTEX.x * 0.5 + offset) * 0.5 + sin(VERTEX.z + offset2) * 0.2;
COLOR = mix(line_color, background_color, -(VERTEX.z) * 0.1 + 0.1);
VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz;
}
void fragment() {
ALBEDO = COLOR.rgb;
}