OpenSceneGraph - 实际大小的对象

时间:2014-04-27 13:46:18

标签: c++ openscenegraph

我正在尝试在OSG中创建一个逼真的场景,我的尺寸有问题。

让我们假设我会在同一个屏幕上玩我的小游戏,因此我确切地知道它的分辨率和像素密度。

现在,在现实生活中,距离你10米的1x1x1米的盒子的apparnet尺寸为10cmx10cmx10cm。我想创造同样的效果。

我有一个在Sketchup上制作的一盒1x1x1米的模型,我把它放在距离相机10米的场景中(我已经体验过,我可以告诉OSG使用正确的单位)。 问题是,在800x800像素的窗口中,盒子是100x100像素(比如说),在80x80像素的窗口中,盒子是10x10像素。我想要的是盒子总是10厘米。 好的是我知道我想要用于这个确切项目的屏幕的大小,分辨率和dpi,所以我可以使用"常量"。

但是,我不知道该怎么做。 我的第一个猜测是缩放世界以匹配正确的大小。但我不确定比例因素是什么。

我还没有在OSG找到任何直接的方法......

你有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我的前两个想法是:

  1. 您可以覆盖重塑(这就是GLUT中的内容,搜索在特定窗口系统的OSG事件队列中推送resizeWindow事件的调用) - 始终将其传递给全宽/屏幕的高度而不是窗口,并告诉它使用0,0作为原点,或者如果你总是以全屏窗口开始,则用空函数覆盖它。

  2. 如果不起作用,您可以根据窗口的尺寸和之前对全屏尺寸的了解重置相机的视锥。在更改投影矩阵时应该有很多信息 - 如果找不到特定于OSG的信息,任何关于投影矩阵的OpenGL信息也适用于OSG。