使用WPF实现3D场景[二]
在上一篇的文章里我们知道如何构造一个简单的三维场景,这次的课程我将和大家一起来研究如何用代码,完成对建立好了的三维场景的观察。
首先看一下DEMO的界面:
可以看到8个方向的按钮,它们将提供观察角度的变化和三维场景的旋转这样的功能。
观察位置变化:
实现原理:改变场景内照相机的绝对位置等属性
实现代码:
定义照相机
<Viewport3D Name="myViewport" Margin="0,0,0,0">
<Viewport3D.Camera>
<PerspectiveCamera x:Name="myViewportCamera" FarPlaneDistance="5000" NearPlaneDistance="0.25" FieldOfView="90" Position="1800,0,0" LookDirection="-1,0,0" UpDirection="0,1,0"></PerspectiveCamera>
</Viewport3D.Camera>定义照相机(观察角度)的变化事件:
, this.myViewportCamera.Position.Y , this.myViewportCamera.Position.Z );
}
三维场景角度变化:
实现原理:改变三维场景内定义的轴的角度
实现代码:
定义操作轴:
<ModelVisual3D.Transform>
<Transform3DGroup>
<MatrixTransform3D/>
<RotateTransform3D >
<RotateTransform3D.Rotation >
<AxisAngleRotation3D Angle="0" Axis="0,10,0" x:Name="myAngleRotationChair"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
<RotateTransform3D >
<RotateTransform3D.Rotation >
<AxisAngleRotation3D Angle="0" Axis="0,0,10" x:Name="myAngleRotationChair_1"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
</ModelVisual3D.Transform>
</ModelVisual3D>定义轴旋转代码:
;
}
好的~如果您对更多的三维场景变成想有所了解,请关注第三讲。
如果您想下载源代码或收听语音教程,请访问:微软webcast
再次感谢您的关注,谢谢!
使用WPF实现3D场景[二]的更多相关文章
- 使用WPF实现3D场景[一]
原文:使用WPF实现3D场景[一] 在这篇文章里,将介绍如何实现一个简单的三维场景,一个三维的空间,包括空间内的三维物体的组合. 首先介绍一下一个三维场景里的基本元素: 先是定义一个简单的三维的场景环 ...
- WPF疑难杂症之一(3D场景)
原文:WPF疑难杂症之一(3D场景) 最近2个月一直在学习WPF,在实际的开发中遇到下面一个3D场景有关的问题,我先给出问题代码:首先是在资源中定义了一个3D变换组:<Window x:Clas ...
- WPF 显示3D密集场景,堆场管理系统
又好久好久没写博客了,这次接着上文https://www.cnblogs.com/CSSZBB/p/12785380.html,上文用WPF 的绘图功能,制作了一个伪3D的2.5D控件ThreeDBo ...
- #WPF的3D开发技术基础梳理
原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关 ...
- 3D场景中的鼠标响应事件
原文:3D场景中的鼠标响应事件 今天要讲的是3D场景中的鼠标响应事件的处理,首先Button的响应是大家熟知的,只要加上一个click事件,然后写一个响应的处理时间就行了.对于二维平面上的一些控件也很 ...
- Ngui 五种点击事件实现方式及在3d场景中点透的情况
http://www.unity蛮牛.com/thread-22018-1-1.html ngui作为unity界面插件之一中,无疑是最好用,使用最多的了从自学unity到现在界面一直使用它 由于它的 ...
- css3创建3D场景
浏览器本身是一个2维平面,对于3D的情况,实际上是增加了一个维度(深度),所以我们需要创建一个3D场景.这时浏览器不仅仅是一个平面了,更像是一个窗口,我们透过这个窗口去观察里面的三维世界.所谓的创建3 ...
- WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...
- 第一章 用three.js创建你的第一个3D场景
第一章 用three.js创建你的第一个3D场景 到官网下载three.js的源码和示例. 创建HTML框架界面 第一个示例的代码如下: 01-basic-skeleton.html 位于 Learn ...
随机推荐
- stm32的电源
有人说rtc会不工作
- vc弹出USB的方法. 附试验通过的代码!
vc弹出USB的方法. 附试验通过的代码! http://blog.sina.com.cn/s/blog_4fcd1ea30100qrzn.html (2011-04-15 10:09:48) boo ...
- TEMPDB
TEMPDB暴涨 阅读目录 前言 正文 原因 解决 补充 回到顶部 前言 tempdb暴增,造成磁盘空间不足,甚至影响业务运行. 回到顶部 正文 如图,tempdb log文件从7.4 ...
- HDU 1069 Monkey and Banana DP LIS
http://acm.hdu.edu.cn/showproblem.php?pid=1069 题目大意 一群研究员在研究猴子的智商(T T禽兽啊,欺负猴子!!!),他们决定在房顶放一串香蕉,并且给猴子 ...
- [转载]Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9807125.html 很多人都说配置文件的配置很繁琐,如果存储在数据库就方便很多,可以通过自定义UI界面 ...
- iOS开发之Quartz2D 六 绘制UIImageView
#import <UIKit/UIKit.h> @interface XMGImageView : UIView /** <#注释#> */ @property (nonato ...
- php array数组的相关处理函数and str字符串处理与正则表达式
下面给各位同学整理了一些关于php array数组的相关处理函数and str字符串处理与正则表达式,希望文章对你会有所帮助. 数组的相关处理函数: 1)数组的键值操作函数 array_value ...
- C# 软件编码规范
一.代码注释 并不是所有的代码均需要注释. 1.类头部注释 /// <summary> /// 描述类的用途 /// 作者: 张三 /// 日期: 2015/12/1 /// </s ...
- System.Xml.XmlException: 引用了未声明的实体“nbsp”
在XML文件中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用.使用这些个字符时,应使用它们的转义序列,下面是5个在XML文件中预定义好的实体: ...
- FireFox中使用showModalDialog显示的对话框不能用window.close()关闭
FireFox中使用 showModalDialog 显示的对话框不能用 window.close() 进行关闭: 是FireFox的配置问题,解决方法如下: 在FireFox地址栏里输入 about ...