OpenGL_JS-lighting PBR 深度解析之直接光照
2024-01-08 01:19:11
绪论
欢迎来到 OpenGL_JS-lighting PBR 系列文章的第二篇,这一次我们将深入研究 直接光照 ,我们将介绍平行光、聚光灯和点光源。了解直接光照可以为我们带来许多好处。比如:更逼真的图像、提高阴影质量、使物体看起来更自然等等。
直接光照概述
直接光照是指 光线从光源直接照射到物体表面 的现象。光源可以是点光源、聚光灯、平行光等。我们对物体进行着色时,光源的颜色与其照射强度共同决定了物体表面的颜色。
平行光
平行光是一种 来自无限远处的平行光线 ,常用来模拟太阳光。由于光线是平行的,因此平行光照射到物体上的角度是一致的,所以不会产生阴影。
在 OpenGL_JS 中,我们可以使用 DirectionalLight
来模拟平行光。DirectionalLight
只有一个方向属性,表示光线的方向。
const directionalLight = new THREE.DirectionalLight( 0xffffff, 1 );
directionalLight.position.set( 0, 1, 0 );
scene.add( directionalLight );
聚光灯
聚光灯是一种 从一个点发出的锥形光 ,常用来模拟手电筒光、聚光灯光等。聚光灯有一个角度属性,表示光线锥的张开角度。聚光灯还可以有一个衰减属性,表示光线随着距离的增加而变弱的程度。
在 OpenGL_JS 中,我们可以使用 SpotLight
来模拟聚光灯。SpotLight
有一个位置属性,表示光源的位置;有一个角度属性,表示光线锥的张开角度;还有一个衰减属性,表示光线随着距离的增加而变弱的程度。
const spotLight = new THREE.SpotLight( 0xffffff, 1 );
spotLight.position.set( 0, 10, 10 );
spotLight.angle = Math.PI / 4;
spotLight.decay = 2;
scene.add( spotLight );
点光源
点光源是一种 从一个点发出的球形光 ,常用来模拟灯泡光、蜡烛光等。点光源有一个强度属性,表示光源的亮度;有一个衰减属性,表示光线随着距离的增加而变弱的程度。
在 OpenGL_JS 中,我们可以使用 PointLight
来模拟点光源。PointLight
有一个位置属性,表示光源的位置;有一个强度属性,表示光源的亮度;还有一个衰减属性,表示光线随着距离的增加而变弱的程度。
const pointLight = new THREE.PointLight( 0xffffff, 1, 10 );
pointLight.position.set( 0, 10, 0 );
scene.add( pointLight );
总结
至此,我们就对 OpenGL_JS-lighting PBR 中的直接光照有了比较全面的了解了。我们介绍了平行光、聚光灯和点光源这三种直接光源,以及如何在 OpenGL_JS 中使用 DirectionalLight
、SpotLight
和 PointLight
来模拟它们。在下一篇文章中,我们将介绍 间接光照 。