master
sunhonglei 5 months ago
parent 26dfcb0355
commit dff2948d39
  1. 10
      Views/UserControl/Viewport3D.xaml.cs
  2. 3
      Views/UserControl/ViewportData/Helper/VideoHelper.cs
  3. 4
      Views/UserControl/ViewportData/Helper/ViewportHelperPro.cs
  4. 8
      Views/UserControl/ViewportData/Helper/ViewportManager.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));

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

@ -1031,6 +1031,7 @@ 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
};
}

@ -81,6 +81,9 @@ public class ViewportManager
public static ColorConfigEntity ColorConfig = new ColorConfigEntity();
public static readonly double sacle = 1.875;
/// <summary>
/// 模型控件对象映射
/// </summary>
@ -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;

Loading…
Cancel
Save