1

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

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

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

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

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

1 回答 1

0

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

感谢大家的帮助!

于 2012-11-26T17:22:27.263 回答