基本上,我正在编写C ++程序来绘制世界中的对象,并且在旋转/转换由多个对象组成的对象时遇到一些照明困难(例如,树对象由圆柱对象组成)叶子的树干和金字塔对象)。

我现在有一个工作光源,但是在旋转对象的子组件(例如其父级树中的金字塔对象)时遇到一些问题。

当我对树对象进行旋转时,所有照明/阴影均有效,但是如果我尝试在树内旋转金字塔对象,则照明会变得不稳定且随机。我真的希望有人可能对我可能遇到的问题有一些提示或提示?

编辑:这个项目有很多文件,将很难在这里给出足够的图片。本质上,我的步骤是:


使用功能正常的opengl光源搭建世界。
创建一个形状对象,该对象具有关联的变换矩阵。
使用形状及其矩阵并计算其法线以用于着色。
现在,创建一个由其他形状对象组成的新形状对象,并将其扔到世界中以使照明生效。
现在问题在这里发生。如果旋转父对象,则照明很好,但是如果旋转子对象,则照明将变得随机。

最佳答案

我在代码中发现了问题。我过于频繁地更新法线,因此opengl照明无法正常使用。

感谢大家的帮助!

10-08 08:29
查看更多