在WPF中显示3D模型

adr*_*rin 13 3d wpf

我想在WPF应用程序中显示3D模型(该模型是在诸如blender的外部工具中准备的).什么是最佳做法?有没有工具来促进这个?旋转/变换性能如何?

Kri*_*son 16

Zam3d 一个很好的工具,可以将3D模型转换为Xaml,但看起来电影已经不复存在,你可以通过谷歌搜索找到它的副本.我高度推荐Petzold的书" 3D编程Windows".还有大量的在线教程,我会谷歌一些现代的.

  • @ErnodeWeerd我猜网络不是永久性的,经过5年的改变......我已经更新了答案...... (3认同)

Ser*_*lov 16

好问题!结果答案取决于您的目标.

  1. 方法.您有兴趣将一些.3ds(.obj,..)模型对象作为场景的静止部分,而不进行任何交互式转换(移动,缩放等).这种方法通常用于简单播放(学习WPF3D)
  2. 方法.您正在考虑使用完整的交互式部件来支持Viewport3D中的任何WPF3D转换.这种方法通常用于专业应用中的丰富3D场景操作.

有很多工具可以解决这个问题,但没有任何案例通用的解决方案.完成这项任务有两个麻烦:

  1. 工具之间的格式不兼容.例如,一个工具创建.3ds(.obj,..)模型,但是将其转换为.xaml(读取.3ds,.obj,...)的第二个工具不理解此模型.
  2. 你在专业工具(如3DMax)中准备的模型......在WPF3D中似乎不太好用.

此外,通过兼容(用于进一步充分的WPF演示)方式来改变模型中的材料将是非常好的.

准备多次试验以获得最佳效果......似乎你大概是2分 - 接近. 因此,阅读.3ds,.obj文件的最佳工具是 Helix 3D Toolkit

食谱很简单.例如,在VB中

Dim CurrentHelix3DSStudioReader As New StudioReader()
Dim MyToyModel3DGroup as Model3DGroup = CurrentHelix3DSStudioReader.Read("MyToy.3ds")
Run Code Online (Sandbox Code Playgroud)

要么

Dim CurrentHelixObjReader As New ObjReader()
Dim MyToyModel3DGroup as Model3DGroup = CurrentHelixObjReader.Read("MyToy.obj")
Run Code Online (Sandbox Code Playgroud)

操纵.3ds,.obj,...模型的最佳工具包括在.xaml中保存是Deep Exploration.我在WPF 3D场景中的示例.快速完整的托管对象

我在WPF 3D场景中的示例. 快速完整的托管对象