From abbffa8827348b0d8d0e74c6df7921b0acd4b31c Mon Sep 17 00:00:00 2001 From: akorzunin Date: Mon, 5 Aug 2024 22:08:24 +0300 Subject: [PATCH] Revert "chore: removed test files from master branch" This reverts commit 01feecb22f3ae08706df61992ee1225720a7ec54. --- .../icosahedron/test/Material.face_index.tres | 18 ++ src/models/icosahedron/test/PointerSphere.gd | 20 ++ src/models/icosahedron/test/UV_face_index.png | Bin 0 -> 93416 bytes src/models/icosahedron/test/cutplanes.gd | 264 ++++++++++++++++++ src/models/icosahedron/test/cutplanes.tscn | 74 +++++ 5 files changed, 376 insertions(+) create mode 100644 src/models/icosahedron/test/Material.face_index.tres create mode 100644 src/models/icosahedron/test/PointerSphere.gd create mode 100644 src/models/icosahedron/test/UV_face_index.png create mode 100644 src/models/icosahedron/test/cutplanes.gd create mode 100644 src/models/icosahedron/test/cutplanes.tscn diff --git a/src/models/icosahedron/test/Material.face_index.tres b/src/models/icosahedron/test/Material.face_index.tres new file mode 100644 index 0000000..9ac385a --- /dev/null +++ b/src/models/icosahedron/test/Material.face_index.tres @@ -0,0 +1,18 @@ +[gd_resource type="StandardMaterial3D" load_steps=4 format=3 uid="uid://b6aokpwbpsi2l"] + +[ext_resource type="Texture2D" uid="uid://cf1aybqr46afw" path="res://src/models/icosahedron/test/UV_face_index.png" id="1_w4ekc"] +[ext_resource type="Shader" path="res://src/models/icosahedron/shaders/cutplane_effect_v3.gdshader" id="2_x1gid"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_2ft62"] +render_priority = 0 +shader = ExtResource("2_x1gid") +shader_parameter/cutplane = Vector4(0.358, 0, 0.934, 0.794) +shader_parameter/color = Color(0, 1, 0, 1) +shader_parameter/enable = true +shader_parameter/outline_thickness = 0.0 + +[resource] +resource_name = "Material.002" +next_pass = SubResource("ShaderMaterial_2ft62") +albedo_texture = ExtResource("1_w4ekc") +roughness = 0.5 diff --git a/src/models/icosahedron/test/PointerSphere.gd b/src/models/icosahedron/test/PointerSphere.gd new file mode 100644 index 0000000..9fb73bd --- /dev/null +++ b/src/models/icosahedron/test/PointerSphere.gd @@ -0,0 +1,20 @@ +@tool +extends MeshInstance3D +class_name PointerSphere + +signal pointer_changed +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + set_notify_transform(true) + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + + pass + +func _notification(what: int) -> void: + match what: + NOTIFICATION_TRANSFORM_CHANGED: + pointer_changed.emit() diff --git a/src/models/icosahedron/test/UV_face_index.png b/src/models/icosahedron/test/UV_face_index.png new file mode 100644 index 0000000000000000000000000000000000000000..e8527a9f28c4e49049fc4b99d3c54a22ac2dd9ea GIT binary patch literal 93416 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 Vector4: + var c = _cutplane.abs() + var diag_vec = is_equal_approx(c.x, c.y) \ + and is_equal_approx(c.y, c.z) + match transfrom: + TransformType.NEG_X: + _cutplane.x = -_cutplane.x + return _cutplane + TransformType.NEG_Y: + _cutplane.y = -_cutplane.y + return _cutplane + TransformType.NEG_Z: + _cutplane.z = -_cutplane.z + return _cutplane + TransformType.SWAP_X: + if diag_vec: + _cutplane.x = ico_b * cutplane.x + _cutplane.y = 0. + _cutplane.w = w_2 + else: + _cutplane = Vector4( + sign(max(_cutplane.x, 1.)), + sign(max(cutplane.y, 1.)), + sign(max(cutplane.z, 1.)), + w_3 + ) + var a = pointer_sphere.position - mesh_icosahedron.position + print_debug(a) + var b = get_closest(a) + print_debug("v: ", b) + return Vector4(b.x, b.y, b.z, w_3 if diag_vec else w_2) + +func get_closest(v: Vector3) -> Vector3: + var a = v.clamp(Vector3(-1, -1, -1), Vector3(1,1,1)) + var diag := false + if a.abs() > Vector3(ico_b,ico_b,ico_b): + print_debug("a") + #for i in 3: + #var s = sign(a[i]) + #if abs(a[i]) < ico_b: + #a[i] = 0 + #else: + #a[i] = ico_b * s + #print_debug(a[i]) + return a + +func angle_to_float(ia: IcoAngle) -> float: + match ia: + IcoAngle.ZERO_0: + return 0. + IcoAngle.ONE_1: + return ico_a + IcoAngle.NEG_ONE_1: + return -ico_a + IcoAngle.PHI: + return ico_b + IcoAngle.NEG_PHI: + return -ico_b + IcoAngle.W_1: + return ico_dst + IcoAngle.W_2: + return w_2 + IcoAngle.W_3: + return w_3 + return 1. + +func float_to_angle(f: float) -> IcoAngle: + if is_equal_approx(f, 0.): + return IcoAngle.ZERO_0 + elif is_equal_approx(f, ico_a): + return IcoAngle.ONE_1 + elif is_equal_approx(f, -ico_a): + return IcoAngle.NEG_ONE_1 + elif is_equal_approx(f, ico_b): + return IcoAngle.PHI + elif is_equal_approx(f, ico_b): + return IcoAngle.NEG_PHI + elif is_equal_approx(f, ico_dst): + return IcoAngle.W_1 + elif is_equal_approx(f, w_2): + return IcoAngle.W_2 + elif is_equal_approx(f, w_3): + return IcoAngle.W_3 + return IcoAngle.ONE_1 + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pointer_sphere.pointer_changed.connect(_aboba) + pass # Replace with function body. + +func _aboba() -> void: + trans = TransformType.NONE + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +## icosahedron faces index according to UV map +const faces: Array[Vector4] = [ + Vector4(ico_c, ico_c, -ico_c, ico_dst), # 0 + Vector4(0, ico_a, -ico_b, ico_dst), # 1 + Vector4(0, ico_a, ico_b, ico_dst), # 2 + Vector4(ico_c, ico_c, ico_c, ico_dst), # 3 + Vector4(ico_a, ico_b, 0, ico_dst), # 4 + Vector4(ico_a, -ico_b, 0, ico_dst), # 5 + Vector4(-ico_c, ico_c, ico_c, ico_dst), # 6 + Vector4(-ico_b, 0, ico_a, ico_dst), # 7 + Vector4(ico_b, 0, ico_a, ico_dst), # 8 + Vector4(ico_c, -ico_c, ico_c, ico_dst), # 9 + Vector4(-ico_a, ico_b, 0, ico_dst), # 10 + Vector4(-ico_a, -ico_b, 0, ico_dst), # 11 + Vector4(-ico_c, -ico_c, ico_c, ico_dst), # 12 + Vector4(-ico_c, ico_c, -ico_c, ico_dst), # 13 + Vector4(-ico_b, 0, -ico_a, ico_dst), # 14 + Vector4(-ico_c, -ico_c, -ico_c, ico_dst), # 15 + Vector4(0, -ico_a, -ico_b, ico_dst), # 16 + Vector4(0, -ico_a, ico_b, ico_dst), # 17 + Vector4(ico_b, 0, -ico_a, ico_dst), # 18 + Vector4(ico_c, -ico_c, -ico_c, ico_dst), # 19 +] + +@export_range(0, 19) var fi: int: + set(val): + fi = val + var v = faces[fi] + cutplane = Vector4(v.x, v.y, v.z, ico_dst) + +@export_category("Debug transform effects") +@export_enum("f_circle", "f_roatate_edge", ) var transfrom_list: String +@export var test_effect: bool: + set(value): + call(transfrom_list) + +func f_none(): + pass + +func f_call(_f: Callable): + var res = _f.call(cutplane, fi) + cutplane = res.cutplane + fi = res.cur_id + notify_property_list_changed() + +func f_circle(): + f_call(roatate_circle) + +static func roatate_circle(cutplane: Vector4, cur_id: int): + cur_id += 1 + if cur_id > 19: + cur_id = 0 + return { + cutplane = faces[cur_id], + cur_id = cur_id, + } + +func f_roatate_edge(): + f_call(roatate_edge) + +static func roatate_edge(cutplane: Vector4, cur_id: int): + match cur_id: + 0,1,2,3,4: + cur_id += 1 + if cur_id > 4: + cur_id = 0 + return { + cutplane = faces[cur_id], + cur_id = cur_id, + } + _: + return { + cutplane = faces[0], + cur_id = 0, + } diff --git a/src/models/icosahedron/test/cutplanes.tscn b/src/models/icosahedron/test/cutplanes.tscn new file mode 100644 index 0000000..afc27ba --- /dev/null +++ b/src/models/icosahedron/test/cutplanes.tscn @@ -0,0 +1,74 @@ +[gd_scene load_steps=8 format=3 uid="uid://dr612yxxuqkob"] + +[ext_resource type="ArrayMesh" uid="uid://dh3qpoqqgdct5" path="res://src/models/icosahedron/assets/icosahedron_Solid.res" id="1_26764"] +[ext_resource type="Script" path="res://src/models/icosahedron/test/cutplanes.gd" id="1_gtl60"] +[ext_resource type="Script" path="res://src/models/icosahedron/components/MeshIcosahedron.gd" id="2_32806"] +[ext_resource type="Material" uid="uid://b6aokpwbpsi2l" path="res://src/models/icosahedron/test/Material.face_index.tres" id="2_tiql4"] +[ext_resource type="Script" path="res://src/models/icosahedron/test/PointerSphere.gd" id="4_a7juu"] + +[sub_resource type="ArrayMesh" id="ArrayMesh_f5xtf"] +resource_name = "icosahedron_Solid" +_surfaces = [{ +"aabb": AABB(-0.850651, -0.850651, -0.850651, 1.70131, 1.7013, 1.7013), +"attribute_data": PackedByteArray(137, 83, 248, 255, 137, 83, 248, 255, 83, 232, 114, 156, 83, 232, 114, 156, 83, 232, 114, 156, 247, 39, 66, 170, 247, 39, 66, 170, 247, 39, 66, 170, 247, 39, 66, 170, 247, 39, 66, 170, 136, 208, 96, 201, 136, 208, 96, 201, 136, 208, 96, 201, 136, 208, 96, 201, 136, 208, 96, 201, 228, 59, 225, 121, 228, 59, 225, 121, 228, 59, 225, 121, 6, 128, 247, 243, 6, 128, 247, 243, 188, 179, 245, 170, 188, 179, 245, 170, 188, 179, 245, 170, 188, 179, 245, 170, 188, 179, 245, 170, 248, 127, 3, 203, 248, 127, 3, 203, 248, 127, 3, 203, 248, 255, 103, 221, 248, 255, 103, 221, 6, 0, 114, 156, 6, 0, 114, 156, 6, 128, 214, 174, 6, 128, 214, 174, 6, 128, 214, 174, 37, 89, 127, 163, 37, 89, 127, 163, 37, 89, 127, 163, 37, 89, 127, 163, 37, 89, 127, 163, 171, 23, 103, 221, 171, 23, 103, 221, 117, 172, 225, 121, 171, 23, 103, 221, 117, 172, 225, 121, 75, 166, 223, 213, 75, 166, 223, 213, 75, 166, 223, 213, 75, 166, 223, 213, 75, 166, 223, 213, 201, 73, 89, 204, 201, 73, 89, 204, 201, 73, 89, 204, 201, 73, 89, 204, 201, 73, 89, 204, 248, 127, 226, 133, 26, 196, 248, 255, 248, 127, 226, 133, 26, 196, 248, 255, 26, 196, 248, 255), +"format": 34896613399, +"index_count": 60, +"index_data": PackedByteArray(2, 0, 22, 0, 44, 0, 1, 0, 54, 0, 27, 0, 12, 0, 49, 0, 23, 0, 11, 0, 28, 0, 59, 0, 8, 0, 40, 0, 31, 0, 7, 0, 36, 0, 50, 0, 18, 0, 32, 0, 45, 0, 17, 0, 55, 0, 37, 0, 0, 0, 43, 0, 53, 0, 9, 0, 51, 0, 41, 0, 10, 0, 58, 0, 48, 0, 19, 0, 46, 0, 56, 0, 24, 0, 4, 0, 14, 0, 29, 0, 13, 0, 3, 0, 30, 0, 16, 0, 6, 0, 35, 0, 5, 0, 15, 0, 42, 0, 20, 0, 33, 0, 47, 0, 34, 0, 21, 0, 52, 0, 38, 0, 25, 0, 57, 0, 26, 0, 39, 0), +"name": "Material.002", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 60, +"vertex_data": PackedByteArray(254, 255, 255, 127, 228, 48, 99, 247, 254, 255, 255, 127, 228, 48, 219, 238, 254, 255, 255, 127, 228, 48, 253, 217, 254, 255, 255, 127, 228, 48, 99, 203, 254, 255, 255, 127, 228, 48, 133, 201, 0, 0, 255, 127, 228, 48, 95, 198, 0, 0, 255, 127, 228, 48, 206, 228, 0, 0, 255, 127, 228, 48, 125, 217, 0, 0, 255, 127, 228, 48, 216, 249, 0, 0, 255, 127, 228, 48, 104, 247, 254, 255, 255, 127, 26, 207, 153, 161, 254, 255, 255, 127, 26, 207, 210, 192, 254, 255, 255, 127, 26, 207, 61, 175, 254, 255, 255, 127, 26, 207, 99, 203, 254, 255, 255, 127, 26, 207, 133, 201, 0, 0, 255, 127, 26, 207, 95, 198, 0, 0, 255, 127, 26, 207, 206, 228, 0, 0, 255, 127, 26, 207, 44, 167, 0, 0, 255, 127, 26, 207, 249, 166, 0, 0, 255, 127, 26, 207, 212, 145, 26, 207, 255, 255, 255, 127, 228, 206, 26, 207, 255, 255, 255, 127, 59, 177, 26, 207, 255, 255, 255, 127, 253, 217, 26, 207, 255, 255, 255, 127, 61, 175, 26, 207, 255, 255, 255, 127, 133, 201, 26, 207, 0, 0, 255, 127, 201, 213, 26, 207, 0, 0, 255, 127, 74, 182, 26, 207, 0, 0, 255, 127, 219, 238, 26, 207, 0, 0, 255, 127, 210, 192, 26, 207, 0, 0, 255, 127, 99, 203, 227, 48, 255, 255, 255, 127, 206, 228, 227, 48, 255, 255, 255, 127, 216, 249, 227, 48, 255, 255, 255, 127, 249, 166, 227, 48, 255, 255, 255, 127, 228, 206, 227, 48, 255, 255, 255, 127, 59, 177, 227, 48, 0, 0, 255, 127, 95, 198, 227, 48, 0, 0, 255, 127, 125, 217, 227, 48, 0, 0, 255, 127, 44, 167, 227, 48, 0, 0, 255, 127, 201, 213, 227, 48, 0, 0, 255, 127, 74, 182, 255, 127, 26, 207, 0, 0, 216, 249, 255, 127, 26, 207, 0, 0, 104, 247, 255, 127, 26, 207, 0, 0, 228, 206, 255, 127, 26, 207, 0, 0, 99, 247, 255, 127, 26, 207, 0, 0, 253, 217, 255, 127, 26, 207, 255, 255, 249, 166, 255, 127, 26, 207, 255, 255, 212, 145, 255, 127, 26, 207, 255, 255, 59, 177, 255, 127, 26, 207, 255, 255, 153, 161, 255, 127, 26, 207, 255, 255, 61, 175, 255, 127, 228, 48, 0, 0, 125, 217, 255, 127, 228, 48, 0, 0, 104, 247, 255, 127, 228, 48, 0, 0, 201, 213, 255, 127, 228, 48, 0, 0, 99, 247, 255, 127, 228, 48, 0, 0, 219, 238, 255, 127, 228, 48, 255, 255, 44, 167, 255, 127, 228, 48, 255, 255, 212, 145, 255, 127, 228, 48, 255, 255, 74, 182, 255, 127, 228, 48, 255, 255, 153, 161, 255, 127, 228, 48, 255, 255, 210, 192, 104, 195, 216, 79, 247, 22, 66, 185, 252, 199, 55, 81, 34, 142, 207, 53, 155, 179, 49, 84, 179, 78, 195, 178, 21, 91, 183, 169, 137, 58, 57, 180, 240, 88, 163, 182, 126, 60, 10, 176, 62, 142, 121, 91, 55, 121, 217, 72, 98, 186, 71, 100, 34, 142, 207, 53, 155, 179, 49, 84, 179, 78, 195, 178, 21, 91, 183, 169, 59, 65, 7, 184, 53, 188, 105, 191, 59, 119, 185, 199, 67, 249, 252, 131, 83, 244, 193, 132, 252, 199, 55, 81, 98, 186, 71, 100, 155, 179, 49, 84, 201, 36, 28, 190, 166, 22, 141, 183, 247, 22, 66, 185, 55, 121, 217, 72, 34, 142, 207, 53, 21, 91, 183, 169, 240, 88, 163, 182, 53, 188, 105, 191, 67, 249, 252, 131, 83, 244, 193, 132, 179, 78, 195, 178, 137, 58, 57, 180, 59, 65, 7, 184, 201, 36, 28, 190, 166, 22, 141, 183, 240, 88, 163, 182, 126, 60, 10, 176, 67, 249, 252, 131, 104, 195, 216, 79, 252, 199, 55, 81, 53, 188, 105, 191, 59, 119, 185, 199, 83, 244, 193, 132, 62, 142, 121, 91, 98, 186, 71, 100, 137, 58, 57, 180, 126, 60, 10, 176, 201, 36, 28, 190, 104, 195, 216, 79, 247, 22, 66, 185, 59, 65, 7, 184, 59, 119, 185, 199, 166, 22, 141, 183, 62, 142, 121, 91, 55, 121, 217, 72) +}] +blend_shape_mode = 0 + +[sub_resource type="SphereMesh" id="SphereMesh_4esic"] + +[node name="Cutplanes" type="Node3D"] +script = ExtResource("1_gtl60") +cutplane = Vector4(-0.934, 0.358, 0, 0.794) +x = 0 +y = 2 +z = 0 +w = 5 +trans = 2 +fi = 10 +transfrom_list = "f_circle" +metadata/_edit_pinned_properties_ = [&"fi"] + +[node name="Solid" type="MeshInstance3D" parent="."] +material_override = ExtResource("2_tiql4") +transparency = 0.15 +cast_shadow = 0 +mesh = SubResource("ArrayMesh_f5xtf") +skeleton = NodePath("") + +[node name="MeshIcosahedron" type="MeshInstance3D" parent="."] +visible = false +material_override = ExtResource("2_tiql4") +transparency = 0.71 +mesh = ExtResource("1_26764") +script = ExtResource("2_32806") + +[node name="PointerSphere" type="MeshInstance3D" parent="."] +transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 1.32146, 1.46401, 1.37105) +mesh = SubResource("SphereMesh_4esic") +script = ExtResource("4_a7juu") + +[node name="icosahedron" type="Node3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.94164, 0, -0.260351) +visible = false + +[node name="Light" type="OmniLight3D" parent="icosahedron"] +transform = Transform3D(-0.290865, -0.771101, 0.566393, -0.055189, 0.604525, 0.794672, -0.955171, 0.199883, -0.218391, 4.07625, 5.90386, -1.00545) +visible = false +light_energy = 54351.4 +omni_range = 4096.0 + +[node name="Camera" type="Camera3D" parent="icosahedron"] +transform = Transform3D(0.685921, -0.324013, 0.651558, -1.49012e-08, 0.895396, 0.445271, -0.727676, -0.305421, 0.61417, 7.35889, 4.95831, 6.92579) +visible = false +current = true +fov = 22.8952 +near = 0.1 +far = 100.0