save
This commit is contained in:
parent
ad95711535
commit
2e310f4053
25 changed files with 852 additions and 74 deletions
|
|
@ -32,10 +32,11 @@ func generate_mesh():
|
|||
var race_length = curve.get_baked_length()
|
||||
var nb_of_point : int = race_length / segment_length
|
||||
|
||||
for i in range(nb_of_point):
|
||||
for i in range(nb_of_point+1):
|
||||
var dist1 = float(i) * segment_length
|
||||
var dist2 = float(i + 1) * segment_length
|
||||
|
||||
|
||||
|
||||
var t1 := curve.sample_baked_with_rotation(dist1, true)
|
||||
var t2 := curve.sample_baked_with_rotation(dist2, true)
|
||||
|
||||
|
|
@ -52,8 +53,6 @@ func generate_mesh():
|
|||
var up2 = t2.basis.y.normalized()
|
||||
|
||||
var p1 := t1.origin
|
||||
if i == 0:
|
||||
p1 += fwd1 * 0.05
|
||||
var p2 := t2.origin
|
||||
|
||||
# Top vertices
|
||||
|
|
@ -68,48 +67,77 @@ func generate_mesh():
|
|||
var p2_right_bottom = p2_right - up2 * road_thickness
|
||||
var p2_left_bottom = p2_left - up2 * road_thickness
|
||||
|
||||
# Top face
|
||||
create_rectangle(p1_right, p1_left, p2_left, p2_right, up1, up2, Vector2(0, dist1 / road_width), Vector2(1, dist2 / road_width))
|
||||
# Top face
|
||||
create_rectangle(
|
||||
p1_right, p1_left, p2_left, p2_right,
|
||||
up1, up2,
|
||||
Vector2(1, dist1 / road_width),
|
||||
Vector2(0, dist1 / road_width),
|
||||
Vector2(0, dist2 / road_width),
|
||||
Vector2(1, dist2 / road_width)
|
||||
)
|
||||
|
||||
# Bottom face (inverted normal)
|
||||
create_rectangle(p1_left_bottom, p1_right_bottom, p2_right_bottom, p2_left_bottom, up1, up2, Vector2(1, dist1 / road_width), Vector2(0, dist2 / road_width))
|
||||
# Bottom face
|
||||
create_rectangle(
|
||||
p1_left_bottom, p1_right_bottom, p2_right_bottom, p2_left_bottom,
|
||||
-up1, -up2,
|
||||
Vector2(0, dist1 / road_width),
|
||||
Vector2(1, dist1 / road_width),
|
||||
Vector2(1, dist2 / road_width),
|
||||
Vector2(0, dist2 / road_width)
|
||||
)
|
||||
|
||||
# Right side face
|
||||
create_rectangle(p1_right_bottom, p1_right, p2_right, p2_right_bottom, right1, right2, Vector2(dist1 / road_thickness, 0), Vector2(dist2 / road_thickness, 1))
|
||||
create_rectangle(
|
||||
p1_right_bottom, p1_right, p2_right, p2_right_bottom,
|
||||
right1, right2,
|
||||
Vector2(dist1 / road_thickness, 0),
|
||||
Vector2(dist1 / road_thickness, 1),
|
||||
Vector2(dist2 / road_thickness, 1),
|
||||
Vector2(dist2 / road_thickness, 0)
|
||||
)
|
||||
|
||||
# Left side face
|
||||
create_rectangle(p1_left, p1_left_bottom, p2_left_bottom, p2_left, left1, left2, Vector2(dist1 / road_thickness, 0), Vector2(dist2 / road_thickness, 1))
|
||||
|
||||
create_rectangle(
|
||||
p1_left, p1_left_bottom, p2_left_bottom, p2_left,
|
||||
left1, left2,
|
||||
Vector2(dist1 / road_thickness, 1),
|
||||
Vector2(dist1 / road_thickness, 0),
|
||||
Vector2(dist2 / road_thickness, 0),
|
||||
Vector2(dist2 / road_thickness, 1)
|
||||
)
|
||||
var final_mesh = st_road.commit()
|
||||
road_mesh_instance.mesh = final_mesh
|
||||
|
||||
var shape = final_mesh.create_trimesh_shape()
|
||||
road_shape.shape = shape
|
||||
|
||||
|
||||
|
||||
func create_rectangle(
|
||||
v1: Vector3, v2: Vector3, v3: Vector3, v4: Vector3,
|
||||
normal1: Vector3, normal2: Vector3,
|
||||
uv1: Vector2, uv2: Vector2
|
||||
uv1: Vector2, uv2: Vector2, uv3: Vector2, uv4: Vector2
|
||||
):
|
||||
# Triangle 1
|
||||
st_road.set_uv(uv1)
|
||||
st_road.set_normal(normal1)
|
||||
st_road.add_vertex(v1)
|
||||
|
||||
st_road.set_uv(Vector2(uv1.x, uv2.y))
|
||||
st_road.set_uv(uv2)
|
||||
st_road.set_normal(normal1)
|
||||
st_road.add_vertex(v2)
|
||||
|
||||
st_road.set_uv(uv2)
|
||||
st_road.set_uv(uv3)
|
||||
st_road.set_normal(normal2)
|
||||
st_road.add_vertex(v3)
|
||||
|
||||
# Triangle 2
|
||||
st_road.set_uv(uv2)
|
||||
st_road.set_uv(uv3)
|
||||
st_road.set_normal(normal2)
|
||||
st_road.add_vertex(v3)
|
||||
|
||||
st_road.set_uv(Vector2(uv2.x, uv1.y))
|
||||
st_road.set_uv(uv4)
|
||||
st_road.set_normal(normal1)
|
||||
st_road.add_vertex(v4)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue