当前位置: 首页 > news >正文

五、导入现有模型

在Helixtoolkit中手搓模型太难了,如果能导入现有模型简直不要太方便。helixtoolkit就提供了Assimp支持:HelixToolkit.SharpDX.Assimp,支持导入3DS、CMO、OBJ、FBX、DAE、glTF、LWO、OFF、STL等模型。

1、Importer类

Importer类提供多种 Load 方法,支持从文件路径、文件流加载模型,并加载其中的纹理、材质和动画数据。输出为HelixToolkit 的场景节点树HelixToolkitScene

// 通过文件路径加载,使用默认配置
public HelixToolkitScene? Load(string filePath);// 通过文件路径加载,指定是否并行处理及后处理步骤
public HelixToolkitScene? Load(string filePath, bool parallelLoad, PostProcessSteps postprocessSteps, params PropertyConfig[] configs);// 通过文件路径和自定义配置加载
public HelixToolkitScene? Load(string filePath, ImporterConfiguration config);// 通过文件流加载,支持格式提示和自定义纹理路径解析器
public ErrorCode Load(Stream fileStream, string filePath, string formatHint, out HelixToolkitScene? scene, ITexturePathResolver? texturePathResolver = null);

HelixtoolkitScene是模型与WPF交互的桥梁,其中包含许多场景节点SceneNode以及动画Animations。利用提供的ScenNodeGroupModel3D类型可以将场景节点添加进模型容器中,最后使用Element3DPresenter控件将其显示出来。

参考代码如下:

public SceneNodeGroupModel3D ModelGroup { get; } = new();
private HelixToolkitScene? scene;private void LoadFile()
{string relativePath = "./Models/3ds/Car.3DS";var importer = new Importer();scene = importer.Load(relativePath);if (scene is null){return;}ModelGroup.AddNode(scene.Root);
}//xaml中
<hx:Element3DPresenter Content="{Binding ModelGroup}" />

2、选中部件

SceneNode是所有其他节点的基类,我们将场景中的3D几何图形节点MeshNode抽取出来即可,注意嵌套关系,GroupNode中会包含GroupNode,GroupNode包含MeshNode。

 [ObservableProperty]private Geometry3D? selectedGeometry;[ObservableProperty]private System.Windows.Media.Media3D.Transform3D? selectedTransform;public Material SelectedMaterial { get; } =new PhongMaterial() { EmissiveColor = Color.Yellow };private void TraverseNodes(SceneNode node){if (node is MeshNode meshNode){node.MouseDown += (s, e) =>{SelectedGeometry = meshNode.Geometry;SelectedTransform = new System.Windows.Media.Media3D.MatrixTransform3D(meshNode.TotalModelMatrix.ToMatrix3D());};node.IsHitTestVisible = true;//可选中}// 检查节点是否有子项if (node is GroupNode groupNode){foreach (var child in groupNode.Items){TraverseNodes(child, meshNodes);}}}//XAML中
<hx:MeshGeometryModel3DGeometry="{Binding SelectedGeometry}"IsSelected="True"Material="{Binding SelectedMaterial}"Transform="{Binding SelectedTransform}"/>

http://www.xdnf.cn/news/1423027.html

相关文章:

  • 01 2025最新VMware虚拟机下载教程
  • Unity项目基本风格/规范
  • Linux上perf工具的使用-基础采样
  • 命名空间级别应用 Pod 安全标准
  • 从组分到涌现:系统科学视域下结构、功能与层级的辨析及在人工智能中的应用
  • 安全等保复习笔记
  • 大模型 RAG 项目必看:技术架构拆解 + 实战步骤,新手也能快速上手
  • 内存管理 - 从虚拟到物理
  • Java全栈工程师面试实战:从基础到微服务的深度解析
  • CentOS10安装RabbitMQ
  • Spring Bean 生命周期中的 @PostConstruct 注解
  • NestJS 3 分钟搭好 MySQL + MongoDB,CRUD 复制粘贴直接运行
  • 【C++进阶篇】学习C++就看这篇--->多态超详解
  • 传统web项目,vue开发实践篇01
  • 微服务Docker-compose之若依部署
  • 视频提取文字用什么软件好?分享6款免费的视频转文字软件!
  • apipost 8.x 脚本循环调用接口
  • 云手机为什么会受到广泛关注?
  • 单链表的基本原理与实现
  • 深入掌握 Flask 配置管理:从基础到高级实战
  • uniapp使用uview UI,自定义级联选择组件
  • 六、练习3:Gitee平台操作
  • RSA的CTF题目环境和做题复现第1集
  • shell——函数与数组
  • 华东制造企业推荐的SD-WAN服务商排名
  • java中常见的几种排序算法
  • 毕业设计:丹麦电力电价预测预测未来24小时的电价pytorch+lstm+历史特征和价格+时间序列 电价预测模型资源 完整代码数据可直接运行
  • js脚本和ts脚本相互调用
  • 虚拟机一插SD卡就蓝屏,导致整个电脑系统蓝屏怎么办
  • 一、SVN与svnbucket.com常见问题解答