【问题标题】:When loading an OBJ i get this加载 OBJ 时,我得到了这个
【发布时间】:2023-03-19 22:41:01
【问题描述】:

这次我已经成功加载了一个模型!耶!!

但是有一个小问题,我在另一个 obj loader 上遇到的问题...

这是它的样子:

http://img132.imageshack.us/i/newglitch2.jpg/

如果你不能马上看到,这里有另一个角度:

http://img42.imageshack.us/i/newglitch3.jpg/

现在这应该看起来像一个立方体,但正如您所见,立方体上的面边缘非常不稳定

还有其他人有这个问题吗,或者如果有人知道如何解决这个问题,请告诉我

如果有需要显示的代码也可以评论,很乐意发布。

嘿,我玩弄了代码(更改了一些东西),这就是我想出的

原文:

glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(50.f,(double)800 / (double)600,0.f,200.f);
    glTranslatef(0.f, 0.f, -10.0f);

结果:乱七八糟的图片(看图片)

当前:

glMatrixMode(GL_MODELVIEW);
    gluPerspective(50.f,(double)800 / (double)600,0.f,200.f);
    glTranslatef(0.f, 0.f, -50.0f);
    glLoadIdentity();

结果:模型不颠簸但无法移动相机(模型就在我面前)

【问题讨论】:

  • gluPrespective 属于投影矩阵,而不是模型视图。
  • 不要删除这样的内容,这不是游戏。您导致答案变得毫无意义 - 请回滚,如果您有与原始问题相关的新问题,请将它们添加到问题中。
  • 图像不工作,我没有带它们.......这里是新问题链接:stackoverflow.com/questions/5380314/i-see-some-transparency

标签: c++ opengl mingw sfml wavefront


【解决方案1】:
gluPerspective(50.f,(double)800 / (double)600,0.f,200.f);
                                              ^^^ 
                                               | 
That's your problem right there ---------------+

对于透视投影,近剪辑距离必须大于 0。其实你应该选择near尽可能远,far clip plane尽可能近。

假设您的深度缓冲区为 16 位宽,然后您将场景分成 32768 个切片。切片分布遵循 1/x 定律。从技术上讲,您是除以零。

【讨论】:

  • 那是原版的吗?或更改的(当前)
【解决方案2】:

这看起来像是投影设置问题。立方体的某些部分在转换为剪辑空间时会超出近/远平面。

据我所知,您使用的是正交投影矩阵 - 这是制作 2D UI 的标准。请查看您的glOrtho 电话的 nearVal 和 farVal。对于 2D UI,它们通常分别设置为 -1 和 1(或 0 和 1),因此可能需要 scale down 立方体或通过修改上述参数来增加视锥体深度。

【讨论】:

  • hmm...实际上我什至没有在我的项目中使用 glOrtho 调用..是否有某个地方我应该设置它?(就像我自己调用它或在一个某些对象,例如“object.glOrtho()”
  • 如果是投影问题,则不会像在两个屏幕截图上那样剪切对象,只需查看第二个屏幕截图的顶面。投影不会那样割伤你的脸。
  • 尝试缩小这个立方体,然后我们将得到答案,无论它是否是投影矩阵问题。
  • @gwiazdorrr:你的意思是让它变小?
  • 我的距离也是0-100,我只将相机向后移动了大约10个单位。立方体的大小约为 3-5 个单位
猜你喜欢
  • 2020-05-13
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 2018-11-30
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多