处理对象内对象的照明

时间:2012-11-25 03:22:41

标签: c++ opengl object rotation lighting

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

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

当我将旋转应用于树对象时,所有光照/着色都有效,但如果我尝试旋转树中的金字塔对象,则光线会变得怪异且随机。我真的希望有人可能会对我可能遇到的问题有一些提示或暗示吗?

编辑:这个项目有很多文件,很难在这里投入足够的文件来提供整个图片。基本上我的步骤是:

  1. 建立一个具有正常功能的opengl光源的世界。
  2. 创建一个形状对象,该对象具有与之关联的变换矩阵。
  3. 使用形状及其矩阵并计算其用于着色的法线。
  4. 现在创建一个由其他形状对象组成的新形状对象,并将其投放到世界中以使照明生效。
  5. 现在问题发生了。如果我旋转父对象,则照明很好,但如果我旋转子对象,则照明会变得随机。

1 个答案:

答案 0 :(得分:0)

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

感谢大家的帮助!