initial commit
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
[gd_scene format=3 uid="uid://6e8umqqix2x7"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b33y7nr7qmp16" path="res://axis/AxisNode.gd" id="1_7q3wq"]
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_mchpo"]
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mchpo"]
|
||||
albedo_color = Color(1, 0, 0, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qksar"]
|
||||
albedo_color = Color(0, 1, 0, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ug0go"]
|
||||
albedo_color = Color(0, 0, 1, 1)
|
||||
|
||||
[node name="Axis" type="Node3D" unique_id=2131743502]
|
||||
script = ExtResource("1_7q3wq")
|
||||
metadata/_custom_type_script = "uid://b33y7nr7qmp16"
|
||||
|
||||
[node name="x_axis" type="MeshInstance3D" parent="." unique_id=1811969245]
|
||||
transform = Transform3D(-4.371139e-08, -0.5, 0, 1, -2.1855694e-08, 0, 0, 0, 1, 0.5, 0, 0)
|
||||
mesh = SubResource("CylinderMesh_mchpo")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_mchpo")
|
||||
|
||||
[node name="y_axis" type="MeshInstance3D" parent="." unique_id=1497480348]
|
||||
mesh = SubResource("CylinderMesh_mchpo")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_qksar")
|
||||
|
||||
[node name="z_axis" type="MeshInstance3D" parent="." unique_id=905154710]
|
||||
mesh = SubResource("CylinderMesh_mchpo")
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_ug0go")
|
||||
@@ -0,0 +1,40 @@
|
||||
extends Node3D
|
||||
class_name AxisNode
|
||||
|
||||
|
||||
var axis_length: float = 1.
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
_setup_axis()
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta: float) -> void:
|
||||
pass
|
||||
|
||||
func _setup_axis():
|
||||
var x_basis = Vector3(1, 0, 0)
|
||||
var y_basis = Vector3(0, 1, 0)
|
||||
var z_basis = Vector3(0, 0, 1)
|
||||
var x_node: MeshInstance3D = get_node("x_axis")
|
||||
x_node.scale = Vector3(0.1, axis_length/2, 0.1)
|
||||
x_node.quaternion = _get_quaternion_rotation(Vector3(0,1,0), x_basis)
|
||||
x_node.position = Vector3(axis_length/2, 0, 0)
|
||||
var y_node = get_node("y_axis")
|
||||
y_node.scale = Vector3(0.1, axis_length/2, 0.1)
|
||||
y_node.quaternion = _get_quaternion_rotation(Vector3(0,1,0), y_basis)
|
||||
y_node.position = Vector3(0, axis_length/2, 0)
|
||||
var z_node = get_node("z_axis")
|
||||
z_node.scale = Vector3(0.1, axis_length/2, 0.1)
|
||||
z_node.quaternion = _get_quaternion_rotation(Vector3(0,1,0), z_basis)
|
||||
z_node.position = Vector3(0, 0, axis_length/2)
|
||||
|
||||
func _get_quaternion_rotation(start_vector: Vector3, end_vector: Vector3):
|
||||
var rot_axis: Vector3 = end_vector.cross(start_vector).normalized()
|
||||
if rot_axis.length_squared() == 0.:
|
||||
return Quaternion.IDENTITY
|
||||
var rot_angle: float = end_vector.angle_to(start_vector)
|
||||
var quat = Quaternion(rot_axis, rot_angle).normalized()
|
||||
return quat
|
||||
@@ -0,0 +1 @@
|
||||
uid://b33y7nr7qmp16
|
||||
Reference in New Issue
Block a user