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样式要尽量少而功能多,用一套模板实现自己在程序中要用到的大多数样式,通过依赖项属性将某些需要改变的属性暴露出来,在程序不需要窗口时,可以释放一些没用的类,这样在程序只保留托盘的情况下,内存占用可以缩小很多。

猜你喜欢

转载自blog.csdn.net/q886yes/article/details/83719321
今日推荐