VS2017 WPF 中插入3D模型

WPF 雖然說算得上一門老技術了,反正在我學的時候(2018年1月)在百度或者谷歌上查,最早甚至能找到10年以前的東西。不過就我現在學習掌握的WPF類庫的使用來說,如果避開c#的內存佔用不談的話,它真的是我感覺最方便的GUI技術了。從GDI到DX,從C到C++,反正是一切微軟的東西都有辦法和它弄到一起。

最近的話,我瞭解了一些WPF中3D相關的使用,老實說,是真TM的方便,如果只是簡單的實現一些模型和相機視角行爲的動畫,再WPF中可以輕鬆做到,甚至用ViewPort2DView3D還可以將控件貼圖到模型上,實現最基礎的3D界面上的交互。

下面就來說如何在WPF中插入3D模型,我是用的是.obj類型的3D模型,從網上查到的教程無非就是兩種辦法,一是下載相關建模軟件的插件,將模型導出爲xaml,再者就是將obj直接放入ExpressionBlend中,ExpressionBlend會將其轉化爲xaml格式。但是不幸的是,以上兩個方法年代太過久遠,插件那條路是徹底不行了,(我安裝了Blender 2.6x)版後,運行時UI總會閃爍,最後就只能下ExpressionBlend來解決,我很好奇爲什麼這個功能沒有加入到VsBlend中,真是日了狗了,VsBlend可以查看obj文件,甚至可以編輯,但是就是沒有辦法把它嵌入到WPF應用中。當然ExpressionBlend由於.NET版本太老,如果直接運行安裝程序會沒有辦法安裝(win10),

但是其實也不用全部安裝,應該只需要

這些就行了

ExpressionBlend的界面是這個樣子的

感覺像是WPF或者WInform做的,然後在這個裏面就可以將obj和mtl文件拖入xaml編輯器中,他就會在後臺自動生成xaml的三維描述(直接用3DViewPort包起來的),然後就可以複製到VS中做接下來的動畫和交互了。

https://msdn.itellyou.cn/ 這個網址應該能下ExpressionBlend。

其實從某些角度看WPF的資源佔用也還是可以接受的,在MFC中如果創建一個DX層,內存佔用也會立馬上升到20多M,而WPF或者Winform程序的實際內存佔用要比在VS中顯示的小大概能有20%-30%左右,你可以獨立運行編譯好的文件看看。也就是說內存其實全被DX消耗了,那麼同樣使用DX的時候,就沒有必要爲難自己使用連佈局都要自己安排的MFC應用了。雖然只用GDI的話MFC單文檔工程只有1M的內存消耗。但在DX前提下,他就沒什麼優勢了。

要在WPF中節約內存的話,就是xaml樣式要儘量少而功能多,用一套模板實現自己在程序中要用到的大多數樣式,通過依賴項屬性將某些需要改變的屬性暴露出來,在程序不需要窗口時,可以釋放一些沒用的類,這樣在程序只保留托盤的情況下,內存佔用可以縮小很多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章