了解了 Blinn-Phong 反射模型,对我们学习其他的 3D 库或建模软件的灯光也很有帮助,比如下面这一段 Three.js 代码。 const material = new THREE.MeshPhongMaterial({ ambient: 0x555555, color: 0x555555, specular: 0xffffff, shininess: 50 }); const light = new THREE.PointLight(0xff0040, 2, 0);...
1 前言 光照元素主要有环境光(ambient)、漫反射光(diffuse)、镜面反射光(specular),基础的光照模型主要有兰伯特(Lambert)光照模型、冯氏(Phong)光照模型和改进的冯氏(Blinn Phong)光照模型。 Lambert 光照模型只包含漫反射光的计算,Phong 光照模型和 Blinn Phong 光照模型都包含环境光、漫反射光、镜面反射光的计算,两...
光照元素主要有环境光(ambient)、漫反射光(diffuse)、镜面反射光(specular),基础的光照模型主要有兰伯特(Lambert)光照模型、冯氏(Phong)光照模型和改进的冯氏(Blinn Phong)光照模型。 Lambert 光照模型只包含漫反射光的计算,Phong 光照模型和 Blinn Phong 光照模型都包含环境光、漫反射光、镜面反射光的计算,两者的区别...
同样如上括号里代表下标,c(specular)、c(light)、m(specular)以及m(gloss)就不在多赘述,和上面一样,重点将会解释一下max这部分。 首先我们可以知道在硬件实现的时候,如果摄像机和光源模型距离足够远的话,Blinn模型和快于Phong模型,因为距离足够远的情况下我们可以认定v和l几乎是不变的,那么h就是一个常量,就不...
Blinn-Phong光照模型是在Phong的基础上改造过来的,我们知道Phone光照模型中:光照 = 漫反射(Diffuse) + 高光反射(Specular) + 环境光(Ambient)漫反射和环境光的计算方式,Blinn-Phong和Phong是相同的,唯一的区别在于高光反射的计算。在此之前,请先对Phong光照模型有比较清楚的了解,具体地可以查看光照模型的...
2.Phong (1)公式 :Specular = SpecularColor * Ks * pow(max(0,dot(R,V)), Shininess),Ks 指的是物体光滑度,SpecularColor指的是高光的颜色 V指的是视角向量 ,R指的是反射向量 Shininess指的是结合pow函数控制高光的阈值 max函数是为了保证取值为正数 ...
Blinn-Phong光照模型是在Phong的基础上改造过来的,我们知道Phone光照模型中: 光照= 漫反射(Diffuse) + 高光反射(Specular) + 环境光(Ambient) 漫反射和环境光的计算方式,Blinn-Phong和Phong是相同的,唯一的区别在于高光反射的计算。 在此之前,请先对Phong光照模型有比较清楚的了解,具体地可以查看光照模型的原理和实...
blinn-phong高光: H=normalize(V+L); specular=pow(saturate(dot(N,H)),shiness); 会遇到如下问题: 图中光源在surface背面,但却仍然产生高光。(可以验证,不使用半角向量h,而使用反射向量r的原始phong高光也存在类似问题。) 此问题的一种简单解决办法,是判断出光源在surface背面则令specular为0,即: ...
Blinn-Phong Reflectance Model(最基础的着色模型) 「1. Specular highlights(高光)」 物体直接反射光源的部分,多见于质感比较光滑的物体。 「2. Diffuse reflection(漫反射)」 当一束平行的入射光线射到粗糙的表面时,表面会把光线向着四面八方反射,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向...
Blinn-Phong光照算法 Phong光照模型是计算机图形学中一种非常基础的光照算法,它的高光部分计算公式如下: specular=pow(max(0,dot(viewDir, reflectDir)),shininess) 其中viewDir是相机坐标和物体坐标之差,reflectDir是光照方向与物体法向的反射,如下图所示: