Trying to fix transformed cube's issues

This commit is contained in:
William Tilton 2020-10-22 21:18:47 -07:00
parent 7f99bdbef5
commit 0a035095c1
2 changed files with 16 additions and 17 deletions

View File

@ -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 )

View File

@ -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