原文: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中运行的更多相关文章

  1. WPF中运行时使内容可以上下左右被鼠标拖动应该怎么做?

    <Window x:Class="testGridSplitter.MainWindow" xmlns="http://schemas.microsoft.com/ ...

  2. Eclipse中输入系统变量和运行参数

    在开发时,有时候可能需要根据不同的环境设置不同的系统参数,我们都知道,在使用java -jar命令时可以使用-D参数来设置运行时的系统变量,同样,在Eclipse中运行java程序时,我们怎么设置该系 ...

  3. Eclipse中输入系统变量和运行参数--转

    原文地址:http://chenzhou123520.iteye.com/blog/1931670 在开发时,有时候可能需要根据不同的环境设置不同的系统参数,我们都知道,在使用java -jar命令时 ...

  4. WPF中,输入完密码回车提交 ,回车触发按钮点击事件

    类似与winform中窗体的AcceptButton属性,在wpf中,需要将按钮的IsDefault设置为true就行.

  5. WPF中的三维空间(2)

    原文:WPF中的三维空间(2) 2.10.3 三维对象操作 1.在二维平面空间移动.缩放.旋转Viewport3D控件对象         图2-196 选中Viewport3D控件对象      图 ...

  6. WPF 中的 Pack URI地(资源文件加载)

    参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows ...

  7. WPF中的URI

    在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI ...

  8. 在 WPF 中的线程

    线程处理使程序能够执行并发处理,以便它可以做多个操作一次.节省开发人员从线程处理困难的方式,设计了 WPF (窗口演示文稿基金会).这篇文章可以帮助理解线程在 WPF 中的正确用法. WPF 内部线程 ...

  9. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

随机推荐

  1. Android中图形截取的方式介绍

    在Android的应用中,有时候我们想仅仅显示一部分图像,这时候就要求图形截图. 1.随意截取图像的方法,以下我们具体介绍一下android中的重要类--Bitmap public final cla ...

  2. php中模拟多继承如何实现

    php中模拟多继承如何实现 一.总结 一句话总结:其实你继承别人也是想调用别人类里面的方法和属性,所以可以这样做:这本类中创建目标类的对象,然后通过这个对象来调用方法和属性,这样比继承来的方便. 二. ...

  3. Linux 系统 杀Oracle 进程

    Linux 系统 杀Oracle 进程 杀掉进程用此方法比较好,能保证杀得干净,而不是用SQL  alter system kill kill -9 `ps -ef|grep "oracle ...

  4. 菜单之一:Menu基础内容 分类: H1_ANDROID 2013-11-03 00:23 906人阅读 评论(0) 收藏

    参考<疯狂android讲义>2.10节P168 1.重要接口 Android菜单相关的重要接口共有以下四个: 其中Menu为普通菜单,SubMenu包含子项,ContextMenu当长时 ...

  5. Unity3D资源管理架构

    在Unity3D引擎中,场景资源文件(.unity)是以2进制格式存储的.但同一时候它也有一种基于文本的表现格式. 可在Edit>Project Setting>Editor 中设置: 1 ...

  6. 百度富文本编辑器ueditor使用启示

    百度富文本编辑器ueditor使用启示 一.总结 一句话总结:使用工具,多去看官方demo,非常详细. 二.百度富文本编辑器ueditor使用启示 官方完整demo 官方完整demo对应的源代码 &l ...

  7. 文本处理之可视化wordcloud

    什么是词云 词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思. 准备工作: python开发 ...

  8. C++省略号类型和参数个数不确定函数参数范例

    声明:所有权利保留. 转载必须说明出处:http://blog.csdn.net/cartzhang/article/details/44203651 今天想写个宏定义,发现宏定义里也可以写不定参数, ...

  9. [NPM] Add comments to your npm scripts

    The need for comments in your package.json file becomes desirable the more and more npm scripts you ...

  10. active set method(激活集方法)

    在优化问题的求解中,如果待优化(最大最小)的目标函数,其解集受限于一组约束条件, g1(x)≥0,-,gk(x)≥0 约束条件定义着可行域(feasible region),对于可行域中的任一点 x ...