mirror of
https://github.com/Relintai/MeshManipulation.git
synced 2025-02-20 00:54:20 +01:00
Trying to fix transformed cube's issues
This commit is contained in:
parent
7f99bdbef5
commit
0a035095c1
18
Main.tscn
18
Main.tscn
@ -1,13 +1,15 @@
|
||||
[gd_scene load_steps=5 format=2]
|
||||
[gd_scene load_steps=6 format=2]
|
||||
|
||||
[ext_resource path="res://Scripts/Main.gd" type="Script" id=1]
|
||||
[ext_resource path="res://Scripts/Camera.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=4]
|
||||
[sub_resource type="CubeMesh" id=3]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=1]
|
||||
albedo_color = Color( 0.592157, 0.905882, 0.0862745, 1 )
|
||||
|
||||
[sub_resource type="CubeMesh" id=5]
|
||||
material = SubResource( 4 )
|
||||
[sub_resource type="CubeMesh" id=2]
|
||||
material = SubResource( 1 )
|
||||
|
||||
[node name="Main" type="Spatial"]
|
||||
transform = Transform( 1, 0, 0, 0, 0.99977, 0.021431, 0, -0.021431, 0.99977, 0, 0, 0 )
|
||||
@ -19,11 +21,14 @@ show_face_normals = false
|
||||
[node name="Meshes" type="Node" parent="."]
|
||||
|
||||
[node name="Cube" type="MeshInstance" parent="Meshes"]
|
||||
transform = Transform( -1.62921e-07, 0, 1, 0, 1, 0, -1, 0, -1.62921e-07, 0, 10, 0 )
|
||||
mesh = SubResource( 3 )
|
||||
material/0 = null
|
||||
|
||||
[node name="Floor" type="MeshInstance" parent="Meshes"]
|
||||
transform = Transform( 6.88346, 0, 0, 0, 0.0447118, 0, 0, 0, 7.16078, 0, 0, 0 )
|
||||
visible = false
|
||||
mesh = SubResource( 5 )
|
||||
mesh = SubResource( 2 )
|
||||
material/0 = null
|
||||
|
||||
[node name="Lights" type="Node" parent="."]
|
||||
@ -35,11 +40,10 @@ transform = Transform( 1, 0, 0, 0, 0.778528, 0.62761, 0, -0.62761, 0.778528, 0,
|
||||
transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -6, 0 )
|
||||
|
||||
[node name="CameraGimbal" type="Spatial" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
|
||||
|
||||
[node name="InnerGimbal" type="Spatial" parent="CameraGimbal"]
|
||||
transform = Transform( 1, -4.65661e-10, 0, 9.31323e-10, 1, 9.31323e-10, 0, 9.31323e-10, 1, 0, 0, 0 )
|
||||
|
||||
[node name="Camera" type="Camera" parent="CameraGimbal/InnerGimbal"]
|
||||
transform = Transform( 0.999999, -2.3283e-09, 2.98023e-08, 1.86264e-09, 1, -7.45058e-09, -2.98023e-08, 5.58794e-09, 1, -0.855393, 0.263348, 5.88796 )
|
||||
transform = Transform( 1, -2.3283e-09, 2.98023e-08, 1.86264e-09, 1, -5.58794e-09, -2.98023e-08, 5.58794e-09, 1, -0.855393, 9.95794, 6.09577 )
|
||||
script = ExtResource( 2 )
|
||||
|
@ -181,7 +181,7 @@ func drawSelectedOutline(selectedFace):
|
||||
var cubeMeshInstance = get_node("Meshes/Cube")
|
||||
var cubeMesh = cubeMeshInstance.get_mesh()
|
||||
|
||||
var ig = get_node("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") if get_node("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") else ImmediateGeometry.new()
|
||||
var ig = get_node("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") if get_node_or_null("Meshes/Cube/DrawSelectedOutline_ImmediateGeometry") != null else ImmediateGeometry.new()
|
||||
var sm = SpatialMaterial.new()
|
||||
sm.flags_unshaded = true
|
||||
sm.vertex_color_use_as_albedo = true
|
||||
@ -238,12 +238,6 @@ func drawWireframe():
|
||||
ig.set_scale(Vector3(sf, sf, sf))
|
||||
cubeMeshInstance.add_child(ig)
|
||||
|
||||
static func rotate_vector3_around(var v3_pos,var v3_pivot,var y_angle):
|
||||
var dir = v3_pos - v3_pivot
|
||||
dir = Quat(Vector3(0,1,0),y_angle) * dir
|
||||
var point = dir - v3_pivot
|
||||
return point
|
||||
|
||||
func _on_StaticBody_mouse_entered():
|
||||
print("In cube")
|
||||
|
||||
@ -269,18 +263,19 @@ func get_hit_mesh_triangle_face_index(hitVector):
|
||||
var meshDataTool = MeshDataTool.new()
|
||||
meshDataTool.create_from_surface(arrayMesh, 0)
|
||||
var camera_origin = camera.get_global_transform().origin
|
||||
var purple_arrow = hitVector - camera_origin
|
||||
var test_vector = hitVector - camera_origin
|
||||
var i = 0
|
||||
while i < vertices.size():
|
||||
var face_index = i / 3
|
||||
var a = cubeMeshInstance.to_global(vertices[i])
|
||||
var b = cubeMeshInstance.to_global(vertices[i + 1])
|
||||
var c = cubeMeshInstance.to_global(vertices[i + 2])
|
||||
print("Triangle coords: ", a, b, c)
|
||||
|
||||
var intersects_triangle = Geometry.ray_intersects_triangle(camera_origin, purple_arrow, a, b, c)
|
||||
var intersects_triangle = Geometry.ray_intersects_triangle(camera_origin, test_vector, a, b, c)
|
||||
|
||||
if intersects_triangle != null:
|
||||
var angle = rad2deg(purple_arrow.angle_to(meshDataTool.get_face_normal(face_index)))
|
||||
var angle = rad2deg(test_vector.angle_to(cubeMeshInstance.to_global(meshDataTool.get_face_normal(face_index))))
|
||||
if angle > 90 and angle < 180:
|
||||
return face_index
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user