当前位置:   article > 正文

WPF 插件HelixToolkit库实现3D显示

helixtoolkit

文章目录

前言

一、HelixToolkit安装

二、使用步骤

1.引入库

2.xmal代码设置

        3.后端程序

        4.3D显示

总结



前言

3D显示、旋转、部件移动(位置获取)

开发一个可导入.stl文件,可视化3D显示模型,部件之间鼠标移动、键盘设置位置等。


WPF开发库HelixToolkit

一、HelixToolkit安装

二、使用步骤

1.引入库

引入库命名空间

  1.   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3.         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  4.         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5.         xmlns:local="clr-namespace:lab2._3D"
  6.         xmlns:hv="http://helix-toolkit.org/wpf"      <!-- 添加helixToolkit命名空间-->  
  7.         mc:Ignorable="d"
  8.         Title="Window3D" Height="450" Width="800">

2.xmal代码设置

UI设置3D光源、相机、网格等信息

  1. <Window x:Class="lab2._3D.Window3D"
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4.         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5.         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6.         xmlns:local="clr-namespace:lab2._3D"
  7.         xmlns:hv="http://helix-toolkit.org/wpf"     
  8.         mc:Ignorable="d"
  9.         Title="Window3D" Height="450" Width="800">
  10.     <Grid>
  11.         <!--加载模型:设置光源、相机、坐标网格-->
  12.         <hv:HelixViewport3D Name="viewPort3D" ZoomExtentsWhenLoaded="True"
  13.                             ShowViewCube="false" ShowCoordinateSystem="True"
  14.                             CoordinateSystemLabelForeground="White"
  15.                             CoordinateSystemVerticalPosition="Center"
  16.                             CoordinateSystemHorizontalPosition="Right"
  17.                             
  18.                             CoordinateSystemHeight="50" 
  19.                             CoordinateSystemWidth="50"
  20.                             
  21.                             RenderOptions.EdgeMode="Unspecified"
  22.                             BorderBrush="White"
  23.                             BorderThickness="0"
  24.                             ShowFrameRate="False"
  25.                             ShowCameraInfo="True"
  26.                             IsManipulationEnabled="True"
  27.                             Background="Transparent"
  28.                             >
  29.             <!-- Remember to add light to the scene -->
  30.             <hv:HelixViewport3D.DefaultCamera>
  31.                 <PerspectiveCamera LookDirection="-587.475,-330.619,-229.365" Position="587.475,330.619,256.278" UpDirection="-0.248,-0.139,0.959" FieldOfView="45" NearPlaneDistance="0.1"/>
  32.             </hv:HelixViewport3D.DefaultCamera>
  33.             <hv:SunLight/>
  34.             
  35.             <hv:GridLinesVisual3D Width="1000" Length="1000" MinorDistance="50" MajorDistance="50" Thickness="1" Fill="#E5CFCECE"/>
  36.         </hv:HelixViewport3D>
  37.     </Grid>
  38. </Window>

3.后端程序

模型导入。

  1. using HelixToolkit.Wpf;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Data;
  10. using System.Windows.Documents;
  11. using System.Windows.Input;
  12. using System.Windows.Media;
  13. using System.Windows.Media.Imaging;
  14. using System.Windows.Media.Media3D;
  15. using System.Windows.Shapes;
  16. namespace lab2._3D
  17. {
  18. /// <summary>
  19. /// Window3D.xaml 的交互逻辑
  20. /// </summary>
  21. public partial class Window3D : Window
  22. {
  23. public Window3D()
  24. {
  25. InitializeComponent();
  26. //模型加载
  27. string modelPath1 = AppDomain.CurrentDomain.BaseDirectory + "Corvus_Building_Lower_NO_Windows.stl"; //模型地址
  28. ModelImporter import = new ModelImporter();
  29. var initGroup1 = import.Load(modelPath1);
  30. string modelPath2 = AppDomain.CurrentDomain.BaseDirectory + "Corvus_Building_Roof_V2.stl";
  31. var initGroup2 = import.Load(modelPath2);
  32. 材质
  33. //GeometryModel3D geometryModel3D = initGroup.Children[0] as GeometryModel3D;
  34. //DiffuseMaterial diffMat = new DiffuseMaterial(new SolidColorBrush(Colors.White));
  35. //geometryModel3D.Material = diffMat;
  36. //ViewPort3D进行显示
  37. ModelVisual3D modelVisual3d1 = new ModelVisual3D();
  38. modelVisual3d1.Content = initGroup1;
  39. viewPort3D.Children.Add(modelVisual3d1);
  40. ModelVisual3D modelVisual3d2= new ModelVisual3D();
  41. modelVisual3d2.Content = initGroup2;
  42. viewPort3D.Children.Add(modelVisual3d2);
  43. }
  44. }
  45. }

4.3D显示

鼠标滚轮实现模型放大与缩小;按住鼠标右键拖动实现模型方位调节。


总结

helixToolkit工具实现3D模型加载到WPF,开发流程效率大大提高。后期实现模型部件运动控制。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/696655
推荐阅读
相关标签
  

闽ICP备14008679号