WPF 3D开发教程
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 3D开发教程相关的知识,希望对你有一定的参考价值。
原文:WPF 3D开发教程(二)
二、相机、光源
2.1 相机和投影
我们一般会用到两种相机,PerspectiveCamera和OrthographicCamera。
PerspectiveCamera:透视投影相机,更符合世界实际。
OrthographicCamera:正投影相机,不会出现近大远小的效果。
更常用的是PerspectiveCamera,所以我们主要介绍这种相机的属性。
相机有三个重要属性,我们一般是要设置好的。
LookDirection:相机镜头朝向。
UpDirection:相机的上方向是哪里。
Position:相机放在哪里。
我们举例子来说明这些属性的意义。假设我们有如下图所示的一个正方体:
当相机的参数设置如下时:
Position="1.75,2.75,2.75" LookDirection="-1.75,-2.75,-2.75" UpDirection="0,1,0"
我们将看到如下画面:
UpDirection是最好理解的,假设我们把它反转,即参数改为:
Position="1.75,2.75,2.75" LookDirection="-1.75,-2.75,-2.75" UpDirection="0,-1,0"
我们将看到整个画面反了过来:
如果我们想看左边那个面,那我们需要修改Position这个属性,我们应该要走到x轴的负半轴才能看到。参数修改为:
Position="-0.75,2.75,2.75" LookDirection="1.25,-2.75,-2.75" UpDirection="0,1,0"
我们将看到如下画面:
我们现在是俯视正方体的,假如我们把参数修改成(LookDirection调整):
Position="1.75,2.75,2.75" LookDirection="-1.75,-1.5,-2.75" UpDirection="0,1,0"
相当于视角往上移,我们将看到如下画面:
2.2 光源
WPF支持以下不同类型的光源:
AmbientLight(环境光) :它所提供的环境光会照亮所有的对象,而不考虑对象的位置或方向。
DirectionalLight(平行光) :像远处的光源那样照亮(如太阳光)。将方向光的 Direction 指定为 Vector3D,但是没有为方向光指定位置。
PointLight(点光源) :像近处的光源那样照亮。 PointLight 具有一个位置并从该位置投射光。 场景中的对象是根据对象相对于光源的位置和距离而被照亮的。 PointLightBase 公开 Range 属性,该属性确定一个距离,超过该距离后模型将无法由光源照亮。 PointLight 还公开了多个衰减属性,这些属性确定光源的亮度如何随距离的增加而减小。 您可以为光源的衰减指定恒定、线性或二次内插算法。
SpotLight(聚光灯) :从 PointLight 继承。 Spotlight 的照亮方式与 PointLight 类似,但是它既具有位置又具有方向。 它们在 InnerConeAngle 和 OuterConeAngle 属性所设置的锥形区域(以度为单位指定)中投射光。
各种光源的示意图如下:
还有一点需要注意的是,光源的颜色跟材质的颜色会进行与处理。例如白光照射在任何颜色上,都是物体原来的颜色;而红光照射到物体,只有红色分量的颜色才会显现出来。
以上是关于WPF 3D开发教程的主要内容,如果未能解决你的问题,请参考以下文章