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 属性所设置的锥形区域(以度为单位指定)中投射光。

各种光源的示意图如下:

还有一点需要注意的是,光源的颜色跟材质的颜色会进行与处理。例如白光照射在任何颜色上,都是物体原来的颜色;而红光照射到物体,只有红色分量的颜色才会显现出来。

原文地址:https://www.cnblogs.com/lonelyxmas/p/12208783.html

时间: 2024-10-08 13:34:23

WPF 3D开发教程(二)的相关文章

WPF 3D开发教程(三)

原文:WPF 3D开发教程(三) 三.3D模型 3D模型就是物体,是3D开发中的主角.我们在第一部分提过,使用三角网格法表示面.而三角形由顶点组成,每个面又有一定的材质,这些都是怎么表示的呢?三角形面由Positions和TriangleIndices两个属性确定,而材质的显示主要由TextureCoordinates和Material两个属性确定.我们具体解释一下这些属性. 3.1 Positions和TriangleIndices 我们举一个简单的例子说明问题.假设我们要表示如下一个平面:

WPF 3D开发教程(一)

原文:WPF 3D开发教程(一) 一.3D基础知识 1.1 坐标系 我们知道,在2D平面绘图时,WPF使用的坐标系(其实计算机上的图形处理一般都是这样)是以屏幕左上角为原点,向右为x轴正方向,向下为y轴正方向.而WPF的3D坐标系,取区域中心为原点,向右为x轴正方向,向上为y轴正方向,z轴正方向垂直于屏幕指向我们. 这是一个右手系,读者可以伸出自己的右手,做下图所示动作.拇指.食指.中指分别代表x.y.z轴. 1.2 3D世界的元素 事实上,电脑屏幕是一个2D平面,3D物体要在此平面中显示,需要

C#WPF 语音开发教程 源代码下载 csdn tts(text to sound) 一步一步 教你制作语音软件 附图和源代码

C#WPF  语音开发教程  一步一步 教你制作语音软件 附图和源代码 效果展示 一 项目准备 1.vs2012开发平台 2.微软的语音软件库 下载:http://download.csdn.net/detail/wyx100/8431269 (含实例项目源代码) 二.开发目标 制作一个语音软件,可以朗读文字: 多个语音库:男音和女音.支持英文和中文朗读: 支持选择播放设备 支持朗读语速选择 支持音量选择 三 开发过程 1.新建WpfSpeechDemo工程 文件(vs开发平台左上角)----新

libgdx游戏引擎3D开发教程-第一章-基础教程

开卷语:我最近才开始学习游戏编程,因为想做个网游玩,所以前几天找了不少引擎来看,于是不出意料的选中了libgdx,值得感谢的是libgdx的文档很多很全,所以没有走多少弯路就成功的配置好了环境.基础教程很完善,好多大神都已经写的很详细了,但是3D方面的很少见,所以我正好要学,索性直接翻译过来,大家共同进步.注意:教程基本是从Wiki上翻译过来,外加自己的小部分理解,所以一般来说应该没什么问题,如有错误请多多指教. =========================================

微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台

上节我们简单介绍了一下什么是公众号第三方平台,今天我们将具体操作如何创建属于您自己的微信第三方平台. 注册认证 用户首选需要注册成为开发平台的用户,注册地址:https://open.weixin.qq.com/ 注册和认证的详细步骤就省略了,没什么难度,相信所有人都看的懂,看不懂的加我QQ群咨询248946220,比较可恶的是认证还需要花300人民币大元,气愤.此处省略几万字. 言归正传,开始说一下详细步骤: 一.创建公众号第三方平台 用户登录后,依次进入管理中心.公众号第三方平台.创建公众号

Odoo 二次开发教程(二)-模块的基础构建

注:本篇及后续均以8.0为基础. 一. Odoo模块的构成 __init__.py 文件是python包导入所必须的文件,内容可以为空,通常情况下我们用来导入自己写的py文件. __openerp__.py odoo模块的必须文件,里边包含了关于本模块的一些基础信息,如,依赖,视图文件等等. static文件夹 存放模块图标.静态文件的地方,js和qweb视图也放于此文件夹内. test 单元测试的相关文件 views 一些区分的比较清楚的模块会将view文件单独存放起来,并起一个名字,但这并非

微信应用号(小程序)开发教程二

更多内容: 开发者专用网址导航:http://www.dev666.com/ 小提示: http://wxopen.notedown.cn/ 这里面复刻了微信小程序的 api 第三章:微信小程序项目结构以及配置 找到创建的 demo 文件夹,把项目导入到你的编辑器,这里使用的是 Sublime Text 编辑器. 这个时候需要根据自己的项目需求结构进行更改了,项目根目录下面是首页渲染的几个 tabBar 页面,以及 app 的一些配置文件,如名片盒项目的 tabBar 是 3 个切换菜单: 我们

XAF应用开发教程(二)业务对象模型之简单类型属性

https://www.cnblogs.com/foreachlife/p/XAFBOSimpleTypeProperty.html 使用过ORM的朋友对这一部分理解起来会非常快,如果没有请自行补习吧:D. 不说废话,首先,我们来开发一个简单的CRM系统,CRM系统第一个信息当然是客户信息.我们只做个简单 的客户信息来了解一下XAF好了. 新建项之后,可以看到如下代码界面: using System; using System.Linq; using System.Text; using Dev

15个WPF项目例子+WPF经典开发教程0

摘要:有人推崇产品,有人推崇运营,也有人推崇战略-到底该推崇什么?李智勇系统地分析了这三者之间的思路,并引用黑格尔的一句话,给出了自己的看法:在尺度中已经蕴含本质,这在产品.运营.战略的侧重上体现的非常好. 视野不拉升或者认知不深入时,就容易在盲人摸象层面上反复,看到微信火了,那就产品最重要,看到阿里火了,那就平台最重要.实际上一个比较显然的事实是,没有锥子一样的产品,那你就火不起来:不能从产品升级为平台,那就很可能活不下去.当然,有些人会说平台也是一种产品,但就和人与猴子都是灵长目,实际上仍是