From bc99451a0ab10dbba6ac1fe4cea020d68bbbad2b Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期五, 28 三月 2025 18:51:18 +0800 Subject: [PATCH] 增加水池和水泵绘制 --- Yw.WinFrmUI.Hydro.L3d.Core/02-helper/06-transform/OrthoTransformHelper.cs | 49 ++++++++++--------------------------------------- 1 files changed, 10 insertions(+), 39 deletions(-) diff --git a/Yw.WinFrmUI.Hydro.L3d.Core/02-helper/06-transform/OrthoTransformHelper.cs b/Yw.WinFrmUI.Hydro.L3d.Core/02-helper/06-transform/OrthoTransformHelper.cs index 5cb3282..778d321 100644 --- a/Yw.WinFrmUI.Hydro.L3d.Core/02-helper/06-transform/OrthoTransformHelper.cs +++ b/Yw.WinFrmUI.Hydro.L3d.Core/02-helper/06-transform/OrthoTransformHelper.cs @@ -88,15 +88,16 @@ /// <param name="mouseX">灞忓箷鍧愭爣X锛堝乏涓婅涓哄師鐐癸級</param> /// <param name="mouseY">灞忓箷鍧愭爣Y锛堝乏涓婅涓哄師鐐癸級</param> /// <param name="depth">娣卞害鍊硷紙鑼冨洿[0, 1]锛屽彲閫夛級</param> - /// <param name="mview">瑙嗗浘鐭╅樀</param> + /// <param name="model">妯″瀷鐭╅樀</param> + /// <param name="view">瑙嗗浘鐭╅樀</param> /// <param name="proj">鎶曞奖鐭╅樀</param> /// <param name="viewportWidth">瑙嗗彛瀹藉害</param> /// <param name="viewportHeight">瑙嗗彛楂樺害</param> /// <returns></returns> - public static Vector3 ScreenToWorld(float mouseX, float mouseY, float depth, Matrix4 mview, Matrix4 proj, int viewportWidth, int viewportHeight) + public static Vector3 ScreenToWorld(float mouseX, float mouseY, float depth, Matrix4 model, Matrix4 view, Matrix4 proj, int viewportWidth, int viewportHeight) { var ndc = ScreenToNDC(mouseX, mouseY, depth, viewportWidth, viewportHeight); - var matrix = mview * proj; + var matrix = model * view * proj; var invert = matrix.Inverted(); // 灏哊DC鍧愭爣杞崲涓轰笘鐣屽潗鏍� var wp = Vector4.TransformRow(new Vector4(ndc, 1f), invert); @@ -108,17 +109,18 @@ /// 涓栫晫鍧愭爣 To 灞忓箷鍧愭爣 /// </summary> /// <param name="wp">涓栫晫鍧愭爣</param> - /// <param name="mview">瑙嗗浘鐭╅樀</param> + /// <param name="model">妯″瀷鐭╅樀</param> + /// <param name="view">瑙嗗浘鐭╅樀</param> /// <param name="proj">鎶曞奖鐭╅樀</param> /// <param name="wiewportWidth">瑙嗗彛瀹藉害</param> /// <param name="viewportHeight">瑙嗗彛楂樺害</param> /// <returns></returns> - public static Vector2 WorldToScreen(Vector3 wp, Matrix4 mview, Matrix4 proj, int wiewportWidth, int viewportHeight) + public static Vector2 WorldToScreen(Vector3 wp, Matrix4 model, Matrix4 view, Matrix4 proj, int wiewportWidth, int viewportHeight) { // 杞崲涓洪綈娆″潗鏍� var wph = new Vector4(wp, 1.0f); //搴旂敤鐭╅樀 - var mvp = mview * proj; + var mvp = model * view * proj; //瑁佸壀鍧愭爣 var clip = Vector4.TransformRow(wph, mvp); //NDC @@ -131,8 +133,6 @@ /// </summary> /// <param name="mouseX">灞忓箷鍧愭爣X锛堝乏涓婅涓哄師鐐癸級</param> /// <param name="mouseY">灞忓箷鍧愭爣Y锛堝乏涓婅涓哄師鐐癸級</param> - /// <param name="depth">娣卞害鍊硷紙鑼冨洿[0, 1]锛屽彲閫夛級</param> - /// <param name="forward">瑙傚療鏂瑰悜</param> /// <param name="model">妯″瀷鐭╅樀</param> /// <param name="view">瑙嗗浘鐭╅樀</param> /// <param name="proj">鎶曞奖鐭╅樀</param> @@ -142,8 +142,6 @@ ( float mouseX, float mouseY, - float depth, - Vector3 forward, Matrix4 model, Matrix4 view, Matrix4 proj, @@ -151,35 +149,8 @@ int viewportHeight ) { - var mview = view * model; - var origins = ScreenToWorld(mouseX, mouseY, depth, mview, proj, viewportWidth, viewportHeight); - return new Ray3(origins, forward); - } - - /// <summary> - /// 鍒涘缓灏勭嚎 - /// </summary> - /// <param name="mouseX">灞忓箷鍧愭爣X锛堝乏涓婅涓哄師鐐癸級</param> - /// <param name="mouseY">灞忓箷鍧愭爣Y锛堝乏涓婅涓哄師鐐癸級</param> - /// <param name="model">妯″瀷鐭╅樀</param> - /// <param name="view">瑙嗗浘鐭╅樀</param> - /// <param name="proj">鎶曞奖鐭╅樀</param> - /// <param name="viewportWidth">瑙嗗彛瀹藉害</param> - /// <param name="viewportHeight">瑙嗗彛楂樺害</param> - public static Ray3 CreateRay2 - ( - float mouseX, - float mouseY, - Matrix4 model, - Matrix4 view, - Matrix4 proj, - int viewportWidth, - int viewportHeight - ) - { - var mview = view * model; - var near = ScreenToWorld(mouseX, mouseY, 0f, mview, proj, viewportWidth, viewportHeight); - var far = ScreenToWorld(mouseX, mouseY, 1f, mview, proj, viewportWidth, viewportHeight); + var near = ScreenToWorld(mouseX, mouseY, 0f, model, view, proj, viewportWidth, viewportHeight); + var far = ScreenToWorld(mouseX, mouseY, 1f, model, view, proj, viewportWidth, viewportHeight); var direction = (far - near).Normalized(); return new Ray3(near, direction); } -- Gitblit v1.9.3