Skip to content

Commit

Permalink
Updated chamfered cube mesh generator prototype
Browse files Browse the repository at this point in the history
  • Loading branch information
RodZill4 committed Oct 9, 2024
1 parent 2231963 commit abad10d
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 13 deletions.
8 changes: 5 additions & 3 deletions material_maker/panels/preview_3d/meshes/compute_cube.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,15 @@ void set_point(int x, int y) {
angle *= 0.78539816339;
angle /= 0.5*curvature;
if (round > 1) {
float m = max(abs(angle.x), abs(angle.y));
angle = 1.1*m*normalize(angle/m);
float max_angle = max(abs(angle.x), abs(angle.y));
float min_angle = min(abs(angle.x), abs(angle.y));
float d2c = min_angle/max_angle;
angle = (1.0+0.12*d2c*d2c)*max_angle*normalize(angle/max_angle);
}
}
vec2 sin_angle = sin(angle);
normal = vec3(sin_angle.x, sqrt(1.0-dot(sin_angle, sin_angle)), sin_angle.y);
vertex = vec3(base.x, 0.5-0.72*radius, base.y)+radius*normal;
vertex = vec3(base.x, 0.5-0.709*radius, base.y)+radius*normal;
tangent = normalize(vec3(1.0, 0.0, 0.0));
tex_uvs = scale*vec2(x, y);
set_face_point(vertex_index, vertex, normal, tangent, tex_uvs);
Expand Down
31 changes: 23 additions & 8 deletions material_maker/panels/preview_3d/meshes/mesh_generator.gd
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ func _ready():
w.borderless = false
w.size = Vector2i(800, 600)
w.move_to_center()
await setup_shader()
await generate_mesh()
update(true)

func get_expression_value_from_string(string : String, prefix: String, values: Dictionary) -> int:
var begin : int = string.find(prefix)
Expand Down Expand Up @@ -65,18 +64,34 @@ func generate_mesh():
mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLE_STRIP, arrays, [], {}, flags)
print("Done")

func _on_reload_shader_pressed():
await setup_shader()
await generate_mesh()
var need_update : bool = false
var need_reset_shader : bool = false
var updating : bool = false

func update(reset_shader : bool = false) -> void:
need_update = true
need_reset_shader = reset_shader
if updating:
return
while need_update:
need_update = false
updating = true
if need_reset_shader:
need_reset_shader = false
await setup_shader()
await generate_mesh()
updating = false

func _on_reload_shader_pressed() -> void:
update(true)

func _on_model_pressed():
generated_mesh.visible = not generated_mesh.visible
ref_mesh.visible = not ref_mesh.visible

func _on_size_value_changed(value):
size = 1 << int(value)
await setup_shader()
await generate_mesh()
update(true)

func _on_curvature_value_changed(value):
await generate_mesh()
update()
4 changes: 2 additions & 2 deletions material_maker/panels/preview_3d/meshes/mesh_generator.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ libraries = {
"": SubResource("AnimationLibrary_s43cy")
}
autoplay = "rotate"
speed_scale = 0.1
speed_scale = 0.01

[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_73u55")
Expand Down Expand Up @@ -199,7 +199,7 @@ text = "Model"

[node name="Size" type="SpinBox" parent="UI/VBoxContainer"]
layout_mode = 2
max_value = 12.0
max_value = 10.0
value = 1.0
prefix = "Size: "

Expand Down

0 comments on commit abad10d

Please sign in to comment.