当前位置:   article > 正文

WPF实现3D模型的导入、平移、模型命名和点击事件_wpf helixviewport3d设置模型颜色

wpf helixviewport3d设置模型颜色

 做一个简单的WPF导入3D模型并平移、更改模型颜色和设置模型名称、点击事件的例子。

新建一个WPF项目,此处.NET环境我用的.NET 8,使用其他环境也可以。

图片

我在blender上面创建一个模型

图片

改个造型

图片

导出STL,命名为model1

图片

再创建一个基础模型

图片

继续导出STL文件,命名为model2

图片

导出的模型,复制到WPF项目的代码目录下,修改属性

图片

引用包HelixToolkit.Core.Wpf

图片

xaml内引入helixtoolkit的命名空间

图片

引入HelixViewport3D,并设置一些基础配置,例如视角、相机高度、光源等等。

图片

启动程序,可以看到当前的页面发生改变,有了3D表示,右键按住可以旋转(可以自定义左键或右键)

图片

窗体加载事件添加导入模型和对其中一个模型进行平移,以及变更颜色

  1. var path = AppDomain.CurrentDomain.BaseDirectory;
  2. string file1 = $"{path}\\model1.stl";
  3. string file2 = $"{path}\\model2.stl";
  4. ModelImporter importer = new ModelImporter();
  5. Model3DGroup group1 = new Model3DGroup();
  6. Model3DGroup group2 = new Model3DGroup();
  7. var model1 = new ModelVisual3D();
  8. var model2 = new ModelVisual3D();
  9. var mg1 = importer.Load(file1);
  10. var mg2 = importer.Load(file2);
  11. var material = new DiffuseMaterial(new SolidColorBrush(Colors.Red));
  12. foreach (var child in mg1.Children)
  13. {
  14. if (child is GeometryModel3D geometryModel)
  15. {
  16. geometryModel.Material = material;
  17. geometryModel.BackMaterial = material;
  18. }
  19. }
  20. var material2 = new DiffuseMaterial(new SolidColorBrush(Colors.Blue));
  21. foreach (var child in mg2.Children)
  22. {
  23. if (child is GeometryModel3D geometryModel)
  24. {
  25. geometryModel.Material = material2;
  26. geometryModel.BackMaterial = material2;
  27. }
  28. }
  29. var rotateTransform = new RotateTransform3D();
  30. var transformGroup = new Transform3DGroup();
  31. var translateTransform = new TranslateTransform3D(2, 2, 2);
  32. transformGroup.Children.Add(rotateTransform);
  33. transformGroup.Children.Add(translateTransform);
  34. model1.Transform = transformGroup;
  35. group1.Children.Add(mg1.Children[0]);
  36. group2.Children.Add(mg2.Children[0]);
  37. model1.Content = group1;
  38. model2.Content = group2;
  39. myView.Children.Add(model1);
  40. myView.Children.Add(model2);

启动程序,可以看到模型被加载出来了,并且变更了咱指定的颜色,model1红色,model2蓝色

图片

对模型设置名字,分别为model1和model2,再对HelixViewPort3D控件提供一个鼠标点击事件,事件实现点击模型,弹出当前点击的模型名称

图片

点击蓝色小球,提示当前模型名称model2

图片

还可以继续做更多拓展,例如动画、画布平移、单个模型的旋转、鼠标拖动模型跟随、模型复制、模型大小变换等等。这部分都可以在模型对象的Transform属性大家庭里面做出实现,此处就不继续列举了。感兴趣的大佬们可以自行深入研究。

引入地址 

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

闽ICP备14008679号