From dff2948d39018f23b6494be8091fbdadd1509e15 Mon Sep 17 00:00:00 2001 From: sunhonglei Date: Wed, 22 Jan 2025 10:39:53 +0800 Subject: [PATCH] fix: --- Views/UserControl/Viewport3D.xaml.cs | 10 ++++++++-- Views/UserControl/ViewportData/Helper/VideoHelper.cs | 3 ++- .../ViewportData/Helper/ViewportHelperPro.cs | 6 ++++-- .../UserControl/ViewportData/Helper/ViewportManager.cs | 8 +++++++- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Views/UserControl/Viewport3D.xaml.cs b/Views/UserControl/Viewport3D.xaml.cs index 8038817..2a82dc9 100644 --- a/Views/UserControl/Viewport3D.xaml.cs +++ b/Views/UserControl/Viewport3D.xaml.cs @@ -65,6 +65,11 @@ public partial class Viewport3D #if DEBUG Viewport3Dx.ShowViewCube = true; Viewport3Dx.ShowCoordinateSystem = true; + Viewport3Dx.ShowCameraInfo = true; + Viewport3Dx.ShowCameraTarget = !Viewport3Dx.ShowCameraTarget; + Viewport3Dx.ShowFrameDetails = !Viewport3Dx.ShowFrameDetails; + Viewport3Dx.ShowFrameRate = !Viewport3Dx.ShowFrameRate; + Viewport3Dx.ShowTriangleCountInfo = !Viewport3Dx.ShowTriangleCountInfo; #endif } @@ -127,7 +132,7 @@ public partial class Viewport3D var center = ViewportManager.ModelBounds.Center; var maxDimension = ViewportManager.ModelBounds.Size.Length(); - var distance = maxDimension *1.2; // 调整相机到模型的距离,保证视野范围内 + var distance = maxDimension * 1.2; // 调整相机到模型的距离,保证视野范围内 // 获取当前相机 var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; @@ -188,7 +193,8 @@ public partial class Viewport3D var maxDimension = ViewportManager.ModelBounds.Size.Length(); var distance = maxDimension *1.2; // 调整相机到模型的距离,保证视野范围内 var camera = Viewport3Dx.Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; - camera.Position = new Point3D(center.X, center.Y, center.Z + distance); // 从前面看,Z轴正方向 + camera.Position = new Point3D(center.X, center.Y, center.Z); // 从前面看,Z轴正方向 + camera.Width = ViewportManager.calCameraWidth(); camera.UpDirection = new Vector3D(0, -1, 0); camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); ViewportHelperPro.RotateModel(new Vector3D(0,-1,0)); diff --git a/Views/UserControl/ViewportData/Helper/VideoHelper.cs b/Views/UserControl/ViewportData/Helper/VideoHelper.cs index 9f6ad5c..645e1b3 100644 --- a/Views/UserControl/ViewportData/Helper/VideoHelper.cs +++ b/Views/UserControl/ViewportData/Helper/VideoHelper.cs @@ -199,8 +199,9 @@ public class VideoHelper var center = ViewportManager.ModelBounds.Center; var maxDimension = ViewportManager.ModelBounds.Size.Length(); var distance = maxDimension *1.2; // 调整相机到模型的距离,保证视野范围内 - var camera = ViewportManager.GetViewport3D().Camera as HelixToolkit.Wpf.SharpDX.PerspectiveCamera; + var camera = ViewportManager.GetViewport3D().Camera as HelixToolkit.Wpf.SharpDX.OrthographicCamera; camera.Position = new Point3D(center.X, center.Y, center.Z + distance); // 从前面看,Z轴正方向 + camera.Width = ViewportManager.calCameraWidth(); camera.UpDirection = new Vector3D(0, -1, 0); camera.LookDirection = new Vector3D(center.X - camera.Position.X, center.Y - camera.Position.Y, center.Z - camera.Position.Z); ViewportHelperPro.RotateModel(new Vector3D(0,-1,0)); diff --git a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs index d31d3cf..e742caf 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs @@ -1030,7 +1030,8 @@ public class ViewportHelperPro // 相机位置和朝向 var cameraPosition = center - normalizedDirection * (float)distance; // 沿正方向放置相机 var lookDirection = center - cameraPosition; // 朝向模型中心 - + + double width = ViewportManager.calCameraWidth(); // 创建并返回相机 return new HelixToolkit.Wpf.SharpDX.OrthographicCamera @@ -1039,7 +1040,8 @@ public class ViewportHelperPro LookDirection = lookDirection.ToVector3D(), UpDirection = new Vector3D(0, 1, 0), // 默认全局 Y 轴为上方向 NearPlaneDistance = 0.1f, - FarPlaneDistance=1000 + FarPlaneDistance=1000, + Width = width }; } diff --git a/Views/UserControl/ViewportData/Helper/ViewportManager.cs b/Views/UserControl/ViewportData/Helper/ViewportManager.cs index 8628ad2..e8280c9 100644 --- a/Views/UserControl/ViewportData/Helper/ViewportManager.cs +++ b/Views/UserControl/ViewportData/Helper/ViewportManager.cs @@ -81,6 +81,9 @@ public class ViewportManager public static ColorConfigEntity ColorConfig = new ColorConfigEntity(); + public static readonly double sacle = 1.875; + + /// /// 模型控件对象映射 /// @@ -432,7 +435,10 @@ public class ViewportManager _viewport.CameraMode = CameraMode.Inspect; } } - + public static double calCameraWidth() + { + return ModelBounds.Size.Z * sacle; + } public static void ShowMeshLines(bool isShow,bool isCrown) { if (_viewport == null) return;