摘要: 概述在三维场景里,Camera是不可或缺的元素。和人的眼睛一样,场景中现实的内容,实际上是Camera“看到”的。下图是在Google Sketchup里,Left视角的Camera所“看到”的内容:和常见三维建模软件类似,在WPF的3D里,也涉及到Camera对象,在WPF里,有三种Camera:MatrixCameraPerspectiveCameraOrthographicCamera投影摄像机上述三种Camera中,PerspectiveCamera和OrthographicCamera属于投影摄像机,它将三维空间里的物体,投影到一个平面上,而这的不同之处在于,Orthographic 阅读全文
posted @ 2012-04-08 17:41 @张凯@ 阅读(803) 评论(0) 推荐(0) 编辑
摘要: 前文我简要的介绍了在WPF中,如何控制摄像头移动,已达到动画的效果。也带来了一个新的问题:摄像头移动的时候,毫无阻拦,这就是所谓的“穿墙模式”。有没有什么办法解决这个问题呢?有,就是在移动摄像头前先进行“碰撞检测”,确定摄像头的新位置区间中没有其他的三维模型。本文将介绍如何在WPF中进行三维碰撞检测。利用Rect3D.IntersectsWith 方法在进入下一节前,先看看最简单的碰撞检测方式:利用Rect3D.IntersectsWith 方法。Model3D有一个Bounds属性,用来表示该Model3D的边界:该属性是Rect3D类型的,我们可以使用IntersectsWith 来确定相 阅读全文
posted @ 2012-04-08 17:41 @张凯@ 阅读(1038) 评论(0) 推荐(0) 编辑
摘要: 前文介绍了Viewport3D中的两种摄像机:OrthographicCamera和PerspectiveCamera。在3D场景里漫游,最主要的工作就是针对用户输入(例如鼠标左右移动、键盘按下A、W、S、D等键)来改变摄像机的位置、方向。本文接下来介绍如何通过改变PerspectiveCamera的属性,来达到场景的漫游效果。摄像机动作我摄像机的动作可以分成三类、移动、旋转、拉升镜头。用一个枚举来描述这些动作:public enum SceneCameraAction{ MoveForward, //向前移动 MoveBack, //向后移动 MoveLe... 阅读全文
posted @ 2012-04-08 17:40 @张凯@ 阅读(764) 评论(0) 推荐(0) 编辑
摘要: <Viewport3D x:Name="MyViewport3D"> <Viewport3D.Camera> <!-- 照相机--> <PerspectiveCamera Position="0,0,8" x:Name="MyCamera"></PerspectiveCamera> </Viewport3D.Camera> <!--照相机有了我们开始绘制立方体模型了,6个面--> <Viewport3D.Children> <Mode 阅读全文
posted @ 2012-04-08 17:36 @张凯@ 阅读(617) 评论(0) 推荐(0) 编辑