2010-06-27 117 views
12

我想在WPF應用程序中顯示3D模型(該模型是在外部工具(如攪拌器)中準備的)。最佳做法是什麼?有沒有什麼工具可以促進這一點?旋轉/變換性能如何?在WPF中顯示3D模型

回答

16

Zam3d 是將3D模型轉換爲Xaml的好工具,但它看起來像Electric Rain已經不存在了,您可以在Googling for it的某個位置找到一個副本。我高度推薦Petzold的書3D Programming for Windows。網上也有很多的教程,我會爲一些現代的谷歌。

+0

所有鏈接除了彼佐爾德和「讓我谷歌爲你「,已成爲404. – 2015-09-17 05:43:52

+2

@ErnodeWeerd我猜網絡是不是永久性的,5年後的事情發生了變化...我已經更新了答案... – 2015-09-17 20:08:52

15

好問題! 結果 - 答案取決於你的目標。

  1. 方法。您有興趣將一些.3ds(.obj,..)模型對象作爲場景的靜態部分,而不進行任何交互式轉換(移動,縮放等)。此方法適用於簡單播放(學習WPF3D)
  2. 方法。您正在考慮在Viewport3D中支持完整的交互式部分,以支持WPF3D轉換。這種方法通常用於專業應用中豐富的3D場景操作。

解決此任務有相對較多的工具,但沒有任何情況下通用解決方案。 執行此任務有兩個麻煩:

  1. 工具之間不兼容的格式。例如,一個工具創建 .3ds(.obj,..)模型,但將其轉換爲.xaml (閱讀.3ds,.obj,...)的第二個工具不理解此模型。
  2. 你準備在專業工具像3DMax,...不是 模型似乎很好在WPF3D。

此外,通過兼容(用於進一步充分的WPF呈現)方式更改模型中的材質將非常好。

準備好多次實驗以取得最佳效果...... 看來你大概是2分 - 方法。 所以,最好的工具,用於讀取.3DS,obj文件是 Helix 3D Toolkit

食譜很簡單。例如,對於操縱.3DS在VB

Dim CurrentHelix3DSStudioReader As New StudioReader() 
Dim MyToyModel3DGroup as Model3DGroup = CurrentHelix3DSStudioReader.Read("MyToy.3ds") 

或者

Dim CurrentHelixObjReader As New ObjReader() 
Dim MyToyModel3DGroup as Model3DGroup = CurrentHelixObjReader.Read("MyToy.obj") 

最好的工具,OBJ,...模型,包括在節能名爲.xaml是深部找礦。我在WPF 3D場景中的示例。快速全託管對象

My sample in WPF 3D scene. Fast full managed object

+0

」以前稱爲右半球深勘探CAD現在是SAP Visual Enterprise Author.Only Standalone l存在隱患,並且標準版本已經停止「http://www.simulistic.com/sap.html – 2014-09-19 13:00:13