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