光线随相机位置移动

2024-04-18 23:29:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用kivy来实现一个简单的点光源渲染器与多纹理和法线映射。我的场景是一个简单的正方形,以原点为中心进行贴图。我有4张地图: 漫射反照率 镜面反照率 粗糙度图 法线贴图

在python/kivy代码中,我将矩阵和其他制服设置如下:

view_mat = Matrix().look_at(self.cam_pos*math.sin(self.cam_rot),0,self.cam_pos*math.cos(self.cam_rot),0.,0.,0.,0.,1.,0.)
projection_mat = Matrix().view_clip(-width/height, width/height, -1., 1., 1., 10000., 1.)
light_pos = //can vary with keyboard input
model_mat = Matrix() (identity)
light_pos = (model_mat.multiply(view_mat)).normal_matrix() //Computes the inverse transpose of the upper left corner of the modelView matrix

对象的法线设置为(0,0,1),切线为(1,0,0)

我的碎片着色器是:

^{pr2}$

以及关联的碎片着色器:

^{3}$

现在,当我移动相机时,N.L值会发生变化,这一点都没有意义,尽管我花了几天时间调试它,但我还是搞不清这段代码中有什么错误。在


Tags: the代码posselfviewmathwidthmatrix