Graphics 如何照亮对象,phong模型
我正试图找出如何使用phong模型根据灯光照明缩放颜色。例如,给定I=KaAx,其中ka是环境系数,Ax是环境照明强度,其中x可以是rb或g,我想将其应用于纹理颜色为(1,0,1)的曲面。我尝试将单个rgb值乘以I,(r*Ka*Ar.r,r*Kb*Ag,r*Kg*Ab)照明度,但遗憾的是,它可以完全改变颜色,这不是我想要的 好的,我看不到什么:Graphics 如何照亮对象,phong模型,graphics,lighting,phong,Graphics,Lighting,Phong,我正试图找出如何使用phong模型根据灯光照明缩放颜色。例如,给定I=KaAx,其中ka是环境系数,Ax是环境照明强度,其中x可以是rb或g,我想将其应用于纹理颜色为(1,0,1)的曲面。我尝试将单个rgb值乘以I,(r*Ka*Ar.r,r*Kb*Ag,r*Kg*Ab)照明度,但遗憾的是,它可以完全改变颜色,这不是我想要的 好的,我看不到什么: 环境光和漫反射光不应相乘,而应使用加法 您不使用任何法向量或灯光方向/位置(至少我在任何地方都找不到) 您还应该使用glColor参数(除非您根本不使
- 环境光和漫反射光不应相乘,而应使用加法
- 您不使用任何法向量或灯光方向/位置(至少我在任何地方都找不到)
- 您还应该使用glColor参数(除非您根本不使用它)
pixel_color.r=clamp_to_1 // clamp to <0.0,1.1>
(
texture_color.r*glColor.r // pixel color without lighting
*( // apply lighting
diffuse.r*((glNormal.xyz*NormalMatrix).light_dir.xyz) // diffuse * dot product of light source direction and normal vectors. If you need also consider distance just multiply by next term...
+ambient.r // ambient light is additive !!!
)
);
pixel\u color.r=climp\u to\u 1//climp to
(
纹理\u color.r*glColor.r//无照明的像素颜色
*(//应用照明
漫射R*((Galth.Xyz * NormalMatrix).Lyxydi.XYZ)//扩散*光源方向和正常矢量的点积。如果你还需要考虑距离,只需乘以下一个学期…
+环境光。r//环境光是可加的!!!
)
);
附言
- NormalMatrix是原点设置为[0.0,0.0,0.0]的ModelView(无位置偏移)
- 如果您还想添加反射率,那么不要忘记计算反射法线。。。它与漫射光不同(除非天空盒的大小是无限的)。另外,带有Environment skybox的cubemap帮助很大