Three.js个人学习笔记二

相机

THREE.Camera是相机的抽象基类,其子类有两种相机,分别是正投影相机THREE.OrthographicCamera和透视投影相机THREE.PerspectiveCamera

两者区别

透视投影有一个基本点,就是远处的物体比近处的物体小
在工程建筑领域,正投影的例子很多,其特点是远近高低比例都相同

正投影

OrthographicCamera(left,right,top,bottom,near,far)

left:左平面距离相机中心点的垂直距离
near:近平面距离相机中心点的垂直距离

有了这些参数和相机中心点,我们这里将相机的中心点又定义为相机的位置。通过这些参数,我们就能够在三维空间中唯一的视景体。
投影变换的目的就是定义一个视景体,使得视景体外多余的部分裁剪掉,最终图像只是视景体内的有关部分。

近视投影

PerspectiveCamera(fov,aspect,near,far)

1.视角fov:这个最难理解,我的理解是,眼睛睁开的角度,即,视角的大小,如果设置为0,相当你闭上眼睛了,所以什么也看不到,如果为180,那么可以认为你的视界很广阔,但是在180度的时候,往往物体很小,因为他在你的整个可视区域中的比例变小了

2.近平面near:表示你近处的裁面的距离。也可以认为是眼睛距离近处的距离,假设为10米远,不要设置为负值,Three.js不知道怎么算

3.纵横比aspect:实际窗口的纵横比,即宽度除以高度。这个值越大,说明你宽度越大,那么你可能看的是宽银幕电影了

光源

光源基类

THREE.Light(hex)    //hex接受一个16进制的颜色值

派生的其他种类的光源

THREE.AmbientLight (环境光)
THREE.SpotLight (聚光灯)
THREE.AreaLight (区域光)
THREE.PointLight (点光源)
THREE.DirectionalLight (方向光)

环境光

环境光是经过多次反射而来的光称为环境光,无法确定其最初的方向。环境光是一种无处不在的光。环境光源放出的光线被认为来自任何方向。因此,当你仅为场景指定环境光时,所有的物体无论法向量如何,都将表现为同样的明暗程度。(这是因为,反射光可以从各个方向进入眼睛)

点光源

点光源:由这种光源放出的光线来自同一点,且方向辐射自四面八方。例如蜡烛放出的光,萤火虫放出的光。

PointLight(color, intensity, distance)
color:光的颜色
intensity:光的强度,默认是1.0,就是说是100%强度的灯光
distance:光的距离,从光源所在的位置,经过distance这段距离后,光的强度由intensity衰减为0,默认为0.0,表示光源强度不衰减

聚光灯

这种光源的光线从一个锥体中射出,在被照射的物体上产生聚光的效果。使用这种光源需要指定光的射出方向以及锥体的顶角α

THREE.SpotLight( hex, intensity, distance, angle, exponent )

Hex:聚光灯发出的颜色,如0xFFFFFF
Intensity:光源的强度,默认是1.0,如果为0.5,则强度是一半,意思是颜色会淡一些。和上面点光源一样。
Distance:光线的强度,从最大值衰减到0,需要的距离。 默认为0,表示光不衰减,如果非0,则表示从光源的位置到Distance的距离,光都在线性衰减。到离光源距离Distance时,光源强度为0.
Angle:聚光灯着色的角度,用弧度作为单位,这个角度是和光源的方向形成的角度。
exponent:光源模型中,衰减的一个参数,越大衰减越快。

材质

离开光材质是无法体现的

兰伯特材质

最常见的材质之一就是Lambert材质,这是在灰暗的或不光滑的表面产生均匀散射而形成的材质类型。比如一张纸就是Lambert表面。 首先它粗糙不均匀,不会产生镜面效果。我们在阅读书籍的时候,没有发现书上一处亮,一处不亮吧,它非常均匀,这就是兰伯特材质

Lambert材质表面会在所有方向上均匀地散射灯光,这就会使颜色看上去比较均匀。想想一张纸,无论什么颜色,是不是纸的各个部分颜色都比较均匀呢

Lambert材质会受环境光的影响,呈现环境光的颜色,与材质本身颜色关系不大

环境光扩展

环境光就是在场景中无处不在的光,它对物体的影响是均匀的,也就是无论你从物体的那个角度观察,物体的颜色都是一样的,这就是伟大的环境光。

你可以把环境光放在任何一个位置,它的光线是不会衰减的,是永恒的某个强度的一种光源

猜你喜欢

转载自blog.csdn.net/disasters/article/details/81779451