From cb93ade96fbf599fb7d5edb1fa799edc8c7f1a9d Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 28 Jul 2025 00:09:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E4=B8=BAGizmo3DMove::OnMove?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMCore | 2 +- CMSceneGraph | 2 +- example/Gizmo/Gizmo3DMove.cpp | 49 +++++++++++++++++++++++++++++++++++ inc/hgl/graph/RenderList.h | 2 +- 4 files changed, 52 insertions(+), 3 deletions(-) diff --git a/CMCore b/CMCore index 0ed44f05..11838e9c 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 0ed44f05318c8163dec5353b4ba6bcf7b77ee61a +Subproject commit 11838e9cc813395d57b6bfbc501e99b6526436c0 diff --git a/CMSceneGraph b/CMSceneGraph index b914dbfb..fde1c85a 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit b914dbfb66a2be85b2bcf362f832eb18f44eb179 +Subproject commit fde1c85ad1437123d89971df6ec43e9683e52acc diff --git a/example/Gizmo/Gizmo3DMove.cpp b/example/Gizmo/Gizmo3DMove.cpp index 14f3372d..1f3bc261 100644 --- a/example/Gizmo/Gizmo3DMove.cpp +++ b/example/Gizmo/Gizmo3DMove.cpp @@ -26,8 +26,12 @@ #include #include #include +#include #include #include +#include + +#include VK_NAMESPACE_BEGIN @@ -175,6 +179,51 @@ namespace return(true); } + + bool OnMove(const Vector2i &mouse_coord) override + { + CameraControl *cc=GetCameraControl(); + + if(!cc) + return(false); + + Ray ray; + + cc->SetMouseRay(&ray,mouse_coord); + + Matrix4f l2w=GetLocalToWorldMatrix(); + Vector3f start; + Vector3f end; + Vector3f cross_point; + float dist; + + start=TransformPosition(l2w,Vector3f(0,0,0)); //将原点转换到世界坐标 + + { + end=TransformPosition(l2w,Vector3f(GIZMO_CYLINDER_HALF_LENGTH*20,0,0)); + + cross_point=ray.ClosestPoint(start); + + dist=length(cross_point,start); + + //dist=ray.ToLineSegmentDistance(start,end); + + //dist=ray.ToPointDistance(start); + + MaterialInstance *mi=GetGizmoMI3D(distSetOverrideMaterial(mi); + axis[size_t(AXIS::X)].cone->SetOverrideMaterial(mi); + + std::cout<<"Mouse: "<