Mesh Generation GDSCript

This concludes the mesh generation of walls. We can now put holes into
walls deterministically.
This commit is contained in:
2025-11-02 15:55:00 -05:00
parent 41647dda49
commit 35a1706e58
60 changed files with 435 additions and 4137 deletions

View File

@@ -2,55 +2,41 @@ extends Node
@onready var p1 = $Polygon2D
@onready var p2 = $Polygon2D2
@onready var p3 = $Polygon2D3
@onready var meshInstance = MeshInstance3D.new()
var lines = []
func _process(delta: float) -> void:
for l in lines:
DebugDraw3D.draw_lines(l, Color.DARK_RED)
func chunk_array(arr: Array, chunk_size: int) -> Array:
var result_chunks = []
var i = 0
while i < arr.size():
var chunk = arr.slice(i, i + chunk_size)
result_chunks.append(chunk)
i += chunk_size
return result_chunks
meshInstance.rotate(Vector3.UP, (0.9 * delta))
meshInstance.rotate(Vector3.RIGHT, (0.9 * delta))
func _ready() -> void:
var tri = Triangulization.new()
var p1_vectors = [Vector2(4, 0), Vector2(4, 4), Vector2(0, 4), Vector2(0, 0)]
var p2_vectors = [Vector2(2, 1), Vector2(2, 2), Vector2(1, 2), Vector2(1, 1)]
var p2_vectors = [Vector2(0, 2), Vector2(0, 1), Vector2(2, 1), Vector2(2, 2)]
var p3_vectors = [Vector2(2, 2), Vector2(2, 1), Vector2(4, 1), Vector2(4, 2)]
p2_vectors.reverse()
p3_vectors.reverse()
p1.polygon = p1_vectors
p2.polygon = p2_vectors
p3.polygon = p3_vectors
p2.color = Color(1, 0, 1)
var result = tri.triangulate_with_holes(p1, p2)
var trianglizationInstance = GeoPolyTriangulization.new(p1, [p2, p3], -0.001)
var vector_indexes = trianglizationInstance.triangulate()
print(vector_indexes)
var vectors_points = trianglizationInstance.vectors
var packedVector2 = p1_vectors
packedVector2.append_array(p2_vectors)
var meshGenerator = GeoPolyMesh.new(vector_indexes, vectors_points)
var mesh = meshGenerator.commit_mesh()
var triangles = chunk_array(result, 3)
print(triangles)
meshInstance.mesh = mesh
print(packedVector2)
for t in triangles:
var triangle_line = []
for ti in range(len(t)):
var rindex = t[ti]
var rindexnext = t[(ti+1) % len(t)]
var v1 = packedVector2[rindex]
var v2 = packedVector2[rindexnext]
var vector1 = Vector3(v1.x, v1.y, 0)
var vector2 = Vector3(v2.x, v2.y, 0)
triangle_line.append(vector1)
triangle_line.append(vector2)
lines.append(triangle_line)
print(lines)
add_child(meshInstance)