WPF 插件HelixToolkit库实现3D显示

这篇具有很好参考价值的文章主要介绍了WPF 插件HelixToolkit库实现3D显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

前言

一、HelixToolkit安装

二、使用步骤

1.引入库

2.xmal代码设置

        3.后端程序

        4.3D显示

总结



前言

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

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


WPF开发库HelixToolkit

一、HelixToolkit安装

helixtoolkit,wpf,3d

二、使用步骤

1.引入库

引入库命名空间

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

2.xmal代码设置

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

<Window x:Class="lab2._3D.Window3D"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:lab2._3D"
        xmlns:hv="http://helix-toolkit.org/wpf"     
        mc:Ignorable="d"
        Title="Window3D" Height="450" Width="800">
    <Grid>

        <!--加载模型:设置光源、相机、坐标网格-->
        <hv:HelixViewport3D Name="viewPort3D" ZoomExtentsWhenLoaded="True"
                            ShowViewCube="false" ShowCoordinateSystem="True"
                            CoordinateSystemLabelForeground="White"
                            CoordinateSystemVerticalPosition="Center"
                            CoordinateSystemHorizontalPosition="Right"
                            
                            CoordinateSystemHeight="50" 
                            CoordinateSystemWidth="50"
                            
                            RenderOptions.EdgeMode="Unspecified"
                            BorderBrush="White"
                            BorderThickness="0"
                            ShowFrameRate="False"
                            ShowCameraInfo="True"
                            IsManipulationEnabled="True"
                            Background="Transparent"
                            >
            <!-- Remember to add light to the scene -->
            <hv:HelixViewport3D.DefaultCamera>
                <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"/>
            </hv:HelixViewport3D.DefaultCamera>
            <hv:SunLight/>
            
            <hv:GridLinesVisual3D Width="1000" Length="1000" MinorDistance="50" MajorDistance="50" Thickness="1" Fill="#E5CFCECE"/>
        </hv:HelixViewport3D>

    </Grid>
</Window>

3.后端程序

模型导入。

using HelixToolkit.Wpf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Shapes;

namespace lab2._3D
{
    /// <summary>
    /// Window3D.xaml 的交互逻辑
    /// </summary>
    public partial class Window3D : Window
    {
        public Window3D()
        {
            InitializeComponent();

            //模型加载
            string modelPath1 = AppDomain.CurrentDomain.BaseDirectory + "Corvus_Building_Lower_NO_Windows.stl"; //模型地址

            ModelImporter import = new ModelImporter();
            var initGroup1 = import.Load(modelPath1);

            string modelPath2 = AppDomain.CurrentDomain.BaseDirectory + "Corvus_Building_Roof_V2.stl";

            var initGroup2 = import.Load(modelPath2);
            材质
            //GeometryModel3D geometryModel3D = initGroup.Children[0] as GeometryModel3D;
            //DiffuseMaterial diffMat = new DiffuseMaterial(new SolidColorBrush(Colors.White));
            //geometryModel3D.Material = diffMat;
            //ViewPort3D进行显示
            ModelVisual3D modelVisual3d1 = new ModelVisual3D();
            modelVisual3d1.Content = initGroup1;
            viewPort3D.Children.Add(modelVisual3d1);
            ModelVisual3D modelVisual3d2= new ModelVisual3D();
            modelVisual3d2.Content = initGroup2;
            viewPort3D.Children.Add(modelVisual3d2);

        }
    }
}

4.3D显示

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

helixtoolkit,wpf,3d


总结

helixToolkit工具实现3D模型加载到WPF,开发流程效率大大提高。后期实现模型部件运动控制。。。文章来源地址https://www.toymoban.com/news/detail-528728.html

到了这里,关于WPF 插件HelixToolkit库实现3D显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WinUI(WASDK)使用HelixToolkit加载机器人3D模型并进行项目实践

    本人之前开发了一个叫电子脑壳的上位机应用,给稚晖君ElectronBot开源机器人提供一些功能,但是由于是结合硬件才能使用的软件,如果拥有硬件的人员太少,就会导致我的软件没什么人用,于是我就想着能不能将机器人硬件的模型加载到软件里,这样用户就可以不使用硬件

    2024年02月08日
    浏览(35)
  • wpf 实现3D按钮

    在WPF中,通过3D转换和视觉效果可以模拟出3D按钮的样式。以下是一个使用 Button 控件并结合 Viewport3D 来创建带有3D外观的按钮的例子: 请注意,这个例子创建了一个具有简单3D效果的按钮,其中包含一个略微向屏幕外突出的立方体。实际应用中可能需要更复杂的3D建模和材质设

    2024年01月23日
    浏览(27)
  • WPF 3D 使用3D Tools简单实现鼠标控制模型

    CSDN上下载一个资源, 3D模型导入wpf_wpf加载obj模型光线和相机配置-C#代码类资源-CSDN下载 从VS中打开,运行如下; 出来一个模型;   可以用鼠标旋转,翻转模型,从不同角度方位查看模型;    项目结构如下;  看一下鼠标功能是如何实现的; 在整个解决方案中找不到任何和

    2024年02月09日
    浏览(29)
  • WPF_3D绘图一

    1.WPF使用DirectX渲染3D元素,它的坐标系如下所示 原点位于呈现区域的中心,x 轴上的正值朝右,但是 y 轴上的正值朝上,z 轴上的正值从原点向外朝向观察者。 2. 3D绘图的四要素 2.1 Viewport3D:视口。 2.2 Camera:相机,提供了三个摄像机类,如下:       1.PerspectiveCamera:透视相机,

    2024年02月03日
    浏览(30)
  • WPF 3D模型介绍及使用

    2D 容器中的三维 : WPF 中的3D 图形内容封装在一个元素中, Viewport3D 该元素可以参与二维元素结构。 在 WPF 中,图形系统将视为二维 Viewport3D 视觉对象,如许多其他元素。 Viewport3D 作为一个窗口(视区)为一个三维场景。 更准确地说,它是一个在其上投影三维场景的图面。 在

    2024年02月07日
    浏览(31)
  • wpf从cs代码创建简单3D物体和3D Tools研究

    前面已经说了,WPF项目中引入3DTools dll之后,在xaml中加入它的命名空间, xmlns:tools=\\\"clr-namespace:_3DTools;assembly=3DTools\\\" 把Viewport3D标签包含在tools:TrackballDecorator标签之中,就可以用鼠标控制  Viewport3D 中的3d模型; 看一下单独用3DTools dll能否加载3d模型;没有资料; 用ILSpy看一下;

    2024年02月10日
    浏览(28)
  • 研究一段WPF 3D 机械臂代码

    网上下一段代码,运行如下;显示了一个3D机械臂;      xmlns=\\\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\\\",这是WPF命名空间,一般写在xaml头部,它的是这样的,Viewport3D xmlns=\\\"......;     代码的大段有:相机,变换,ModelVisual3D.Children里面有2个ModelVisual3D,第一个ModelVisual3

    2023年04月09日
    浏览(23)
  • Unity3D嵌入WPF

           此文章旨在记录自己做的第一个将Unity3D嵌入到WPF的工控项目,由于实际需要,也搜寻过很多博主的文章进行学习,在进行项目开发后记录如下心得以便日后参考,亦希望大家能多多指教。        由于WPF在桌面应用程序开发且处理业务逻辑时的优点明显,但进行三维

    2024年02月02日
    浏览(27)
  • HelixToolkit使用教程

    HelixToolkit使用总结: 问题点:         3d光源         相机         网格信息 1、配置HelixViewPort3d基本参数 2、配置相机参数和相机位置:HelixViewPort3D.DefaultCamera         设置相机的放置方向和观看位置 3、配置光线:hv:SunLight 4、配置坐标网格 hv:GridLinesVisual3D 5、配置模型的属

    2024年02月10日
    浏览(37)
  • wpf 3d 坐标系和基本三角形复习

    wpf 3d 坐标系的描述见此,  WPF 3d坐标系和基本三角形_wpf 坐标系_bcbobo21cn的博客-CSDN博客     X轴正向向右,Y轴正向向上;Z轴,正向是从屏幕里边出来,负向是往屏幕里边去;坐标原点是在呈现区域的中心;  画一个三角形如下;         看摄像机属性,摄像机是在呈现区域

    2024年02月13日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包