写在最前
光照是计算机图形学中的一个重要概念,它可以用来模拟现实世界中的光线效果。光照的效果可以影响图形的视觉效果,使其更加逼真和真实。
图形学光照的研究主要集中在以下几个方面:
- 光源模型:光源模型是用于描述光源的物理模型。常见的光源模型包括点光源模型、聚光灯模型、平行光源模型和环境光源模型。
- 光照模型:光照模型是用于描述光线与物体相互作用的模型。常见的光照模型包括漫反射模型、镜面反射模型、折射模型和材质模型。
- 光照算法:光照算法是用于计算光照效果的算法。常见的光照算法包括直接光照算法、间接光照算法和全局光照算法。
光源模型
THREE.AmbientLight 环境光
环境光源是没有原点,没有方向的光源,它公平的给予场景中的每一个物体相同的光亮,也称为全局光照。
假设颜色为 meshColor 的物体不受其他因素影响,且设置光源强度为1,颜色为lightColor的环境光,则物体最终渲染的颜色值为 meshColor * lightColor
js
let light = new AmbientLight(0xFF0000, 1);
let cube = new Mesh(
new BoxGeometry(1, 1, 1),
new MeshStandardMaterial({ color: 0xCCCCCC })
);
console.log(new Color(0xFF0000).multiply(new Color(0xCCCCCC)).getHexString());
(可以用吸色盘查看颜色是否和打印的值一样)
THREE.PointLight 点光源
从一个点向各个方向发射的光源,现实生活中例子:灯泡、萤火虫等。
- color -(可选)一个表示颜色的 Color 的实例、字符串或数字,默认为一个白色(0xffffff)的 Color 对象。
- intensity -(可选)光照强度。默认值为 1。
- distance - 光源照射的最大距离。默认值为 0(无限远)。
- decay - 沿着光照距离的衰退量。默认值为 2。
定位定光的辅助对象 THREE.PointLightHelper
js
const pointLightHelper = new THREE.PointLightHelper(pointLight);
scene.add(pointLightHelper);
THREE.SpotLight 聚光灯
光线从一个点沿一个方向射出,随着光线照射的变远,光线圆锥体的尺寸也逐渐增大。现实生活中:手电筒
- color -(可选)一个表示颜色的 Color 的实例、字符串或数字,默认为一个白色(0xffffff)的 Color 对象。
- intensity -(可选)光照强度。默认值为 1。
- distance - 光源照射的最大距离。默认值为 0(无限远)。
- angle - 光线照射范围的角度。默认值为 Math.PI/3。
- penumbra - 聚光锥的半影衰减百分比。默认值为 0。
- decay - 沿着光照距离的衰减量。默认值为 2。
定位定光的辅助对象 THREE.SpotLightHelper
js
const spotLightHelper = new THREE.SpotLightHelper(spotLight);
scene.add(spotLightHelper);
THREEJS.DirectionalLight 平行光
从某个角度发出平行且恒定的光强,常用于模拟太阳光。
定位定光的辅助对象 THREE.DirectionalLightHelper
js
const helper = new THREE.DirectionalLightHelper( light, 5 );
scene.add( helper );