原文: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. [Angular2 Animation] Use Keyframes for Fine-Tuned Angular 2 Animations

    When easing isn’t enough to get the exact animation you want, you can leverage keyframes to define a ...

  2. keil快捷键

  3. Vue源码--解读vue响应式原理

    原文链接:https://geniuspeng.github.io/2018/01/05/vue-reactivity/ Vue的官方说明里有深入响应式原理这一节.在此官方也提到过: 当你把一个普通的 ...

  4. 关于serialVersionUID的说明 分类: B1_JAVA 2014-05-24 11:02 1334人阅读 评论(0) 收藏

    1.为什么要使用serialVersionUID (1)对于实现了Serializable接口的类,可以将其序列化输出至磁盘文件中,同时会将其serialVersionUID输出到文件中. (2)然后 ...

  5. Android中的动画详解系列【4】——Activity之间切换动画

    前面介绍了Android中的逐帧动画和补间动画,并实现了简单的自定义动画,这一篇我们来看看如何将Android中的动画运用到实际开发中的一个场景--Activity之间跳转动画. 一.定义动画资源 如 ...

  6. 【codeforces 742C】Arpa's loud Owf and Mehrdad's evil plan

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  7. oracle员工表和部门表基本操作

    emp 员工表(empno 员工号/ename 员工姓名/job 工作/mgr 上级编号/hiredate 受雇日期/sal 薪金/comm 佣金/deptno 部门编号) dept 部门表(dept ...

  8. [Javascript] Create scrollable DOM elements with Greensock

    In this lesson, we will look at Greensock's Draggable API. We will implement a scrollable <div> ...

  9. Django之settings.py 的media路径设置

    在一个 models 中使用 FileField 或 ImageField 需要以下步骤: 1. 在你的 settings.py文件中, 定义一个完整路径给MEDIA_ROOT 以便让 Django在 ...

  10. 开源server软件

    Java缓存server jmemcached http://www.oschina.net/p/jmemcached jmemcached 是一个Java版的 memcached 缓存server, ...