3DMax模型输入到WPF中运行
其实看看笔者文章之前,可以在网上搜索下将3Dmax模型输入到WPF的办法,大部分结果都是这篇文章。这篇文章呢?有点麻烦,就是我们3Dmax模型转换到Blend的时候只有模型没有材质及贴图,需要在Blend3中自己添加材质贴图。模型简单在Blend添加是OK的,复杂点的话,那就麻烦了,笔者想还不直接用Blend建模型呢!还有一点笔者觉得用按钮控制飞机太麻烦了,可以用鼠标控制飞机啊。所以本篇主要是围绕这两点而写的。
本篇的例子下载(开发环境:3ds Max 9.0,Microsoft Expression Blend 3,VS 2010)
本文3DMax模型直接引用WXWinter,但是在3Dmax中我直接给飞机提供了材质贴图(文件:helicopter.max)。打开3Dmax模型,点击文件==>导出==>保存类型(选择.Obj).然后按下图设置好,点击OK即可。

得到了两个文件(.obj和.mtl)
然后得到打开Microsoft Expression Blend 3,创建一个新的WPF程序,并在程序中,选择project==>Add Existion Item(选中上面得到的两个文件以及飞机的材质贴图a.jpg和b.jpg),将它们都加入到工程中来,然后在工程中双击.obj文件,飞机就会自动显示在MainWindow窗口,这里可以调整模型的大小等等。那么这样就成功生成了将3Dmax模型数据转换为了Xaml格式的数据了。

在用vs打开刚才Blend创建的工程,由于笔者用的是vs2010,所以会有代码转换的问题。转换完代码后双击MainWindow.Xaml文件,那么就可以看到3Dmax飞机模型成功输入到了WPF中了。
相信下面的就简单了再Gird中添加鼠标事件(MouseWheel,MouseLeftButtonDown,MouseLeftButtonUp等等)。然后就是对3D物体的具体操作,Viewport3D里面包含了3D的内容,Viewport3D.Camera这个是就像个摄像机将3D的物体以2D形式展现出来,就像大家看电视,拍的是真3维,其实展示就是一个2D平面。这个属性很重要,它的Position属性,LookDirection属性,UpDirection属性直接影响到观看到的3D内容的呈现。这里可以滚动鼠标中间的按钮触发MouseWheel事件,变动摄像机位置,朝LookDirection方向前进,这样给人感觉物体越来越大或者越来越小。
本例对飞机的操作,滚动滑轮式前进或者后退,按住左键并移动鼠标是向左走,向右走,按住右键移动鼠标是旋转飞机。


3DMax模型输入到WPF中运行的更多相关文章
- WPF中运行时使内容可以上下左右被鼠标拖动应该怎么做?
<Window x:Class="testGridSplitter.MainWindow" xmlns="http://schemas.microsoft.com/ ...
- Eclipse中输入系统变量和运行参数
在开发时,有时候可能需要根据不同的环境设置不同的系统参数,我们都知道,在使用java -jar命令时可以使用-D参数来设置运行时的系统变量,同样,在Eclipse中运行java程序时,我们怎么设置该系 ...
- Eclipse中输入系统变量和运行参数--转
原文地址:http://chenzhou123520.iteye.com/blog/1931670 在开发时,有时候可能需要根据不同的环境设置不同的系统参数,我们都知道,在使用java -jar命令时 ...
- WPF中,输入完密码回车提交 ,回车触发按钮点击事件
类似与winform中窗体的AcceptButton属性,在wpf中,需要将按钮的IsDefault设置为true就行.
- WPF中的三维空间(2)
原文:WPF中的三维空间(2) 2.10.3 三维对象操作 1.在二维平面空间移动.缩放.旋转Viewport3D控件对象 图2-196 选中Viewport3D控件对象 图 ...
- WPF 中的 Pack URI地(资源文件加载)
参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows ...
- WPF中的URI
在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI ...
- 在 WPF 中的线程
线程处理使程序能够执行并发处理,以便它可以做多个操作一次.节省开发人员从线程处理困难的方式,设计了 WPF (窗口演示文稿基金会).这篇文章可以帮助理解线程在 WPF 中的正确用法. WPF 内部线程 ...
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
随机推荐
- SQL基础总结——20150730
SQL SQL 指结构化查询语言 SQL 使我们有能力訪问数据库 SQL 是一种 ANSI(美国国家标准化组织) 的标准计算机语言 SQL 是一门 ANSI 的标准计算机语言.用来訪问和 ...
- debian安装git管理本地代码
debian安装git管理本地代码 安装git # aptitude install git-core # aptitude install git-doc git-svn git-email git ...
- jquery-8 jquery如何处理css样式
jquery-8 jquery如何处理css样式 一.总结 一句话总结: 1.如何获取网页的三个高? 1)可视区域的高$(window).height(); 2)文档总高度$(document).h ...
- [内核编程] 键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试
键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1 ...
- thinkphp3.1 发送email
//*********************发送邮件************************** Vendor('email'); //******************** 配置信息 * ...
- vue相关网站资源收集
因为接了一个使用VUE + ES6 + Webpack的项目,所以在工作之余,也加紧了对这些知识的学习,这里放上遇到的觉得不错的网站链接: 1 vue官网 https://cn.vuejs.org 2 ...
- GlobalMemoryStatus 和 GlobalMemoryStatusEx
1.获取系统内存信息有2个api,分别是GlobalMemoryStatus和GlobalMemoryStatusEx.GlobalMemoryStatus函数可以在C语言里直接调用,但是Global ...
- php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)
php中读取文件内容的几种方法.(file_get_contents:将文件内容读入一个字符串) 一.总结 php中读取文件内容的几种方法(file_get_contents:将文件内容读入一个字符串 ...
- [React Router v4] Create Basic Routes with the React Router v4 BrowserRouter
React Router 4 has several routers built in for different purposes. The primary one you will use for ...
- 01_Git的安装和简单使用(命令行模式+图形化模式)
刚开始用git的小白适用,参考链接:http://www.cnblogs.com/qijunjun/p/7137207.html 实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天 ...