随笔分类 - wpf3D
摘要:前文我简要的介绍了在WPF中,如何控制摄像头移动,已达到动画的效果。也带来了一个新的问题:摄像头移动的时候,毫无阻拦,这就是所谓的“穿墙模式”。有没有什么办法解决这个问题呢?有,就是在移动摄像头前先进行“碰撞检测”,确定摄像头的新位置区间中没有其他的三维模型。本文将介绍如何在WPF中进行三维碰撞检测。利用Rect3D.IntersectsWith 方法在进入下一节前,先看看最简单的碰撞检测方式:利用Rect3D.IntersectsWith 方法。Model3D有一个Bounds属性,用来表示该Model3D的边界:该属性是Rect3D类型的,我们可以使用IntersectsWith 来确定相
阅读全文
摘要:概述在三维场景里,Camera是不可或缺的元素。和人的眼睛一样,场景中现实的内容,实际上是Camera“看到”的。下图是在Google Sketchup里,Left视角的Camera所“看到”的内容:和常见三维建模软件类似,在WPF的3D里,也涉及到Camera对象,在WPF里,有三种Camera:MatrixCameraPerspectiveCameraOrthographicCamera投影摄像机上述三种Camera中,PerspectiveCamera和OrthographicCamera属于投影摄像机,它将三维空间里的物体,投影到一个平面上,而这的不同之处在于,Orthographic
阅读全文
摘要:前文介绍了Viewport3D中的两种摄像机:OrthographicCamera和PerspectiveCamera。在3D场景里漫游,最主要的工作就是针对用户输入(例如鼠标左右移动、键盘按下A、W、S、D等键)来改变摄像机的位置、方向。本文接下来介绍如何通过改变PerspectiveCamera的属性,来达到场景的漫游效果。摄像机动作我摄像机的动作可以分成三类、移动、旋转、拉升镜头。用一个枚举来描述这些动作:public enum SceneCameraAction{ MoveForward, //向前移动 MoveBack, //向后移动 MoveLe...
阅读全文
摘要:<Viewport3D x:Name="MyViewport3D"> <Viewport3D.Camera> <!-- 照相机--> <PerspectiveCamera Position="0,0,8" x:Name="MyCamera"></PerspectiveCamera> </Viewport3D.Camera> <!--照相机有了我们开始绘制立方体模型了,6个面--> <Viewport3D.Children> <Mode
阅读全文
摘要:用鼠标旋转相机实现一个虚拟轨迹球(原代号为Avalon的Windows Presentation Foundation的)丹尼尔Lehenbauerhttp://blogs.msdn.com/danlehen抽象一般人想要做的显示三维模型后,他们的第一件事是一下就可以用鼠标旋转。通过鼠标旋转三维对象最常见的技术被称为“虚拟轨迹球”。本文将描述一个轨迹球做什么和步行通过实施机制。在结束示例代码的链接,用鼠标在你自己的WPF应用程序,您可以使用旋转相机。图1a老虎在其原始配置模型图1b虎小鼠模型后一直拖到左略有下降。1。介绍轨迹球转换成三维旋转的2D鼠标的移动。这是通过投影鼠标的位置上,如图2所示
阅读全文