gpt4 book ai didi

c++ - OpenSceneGraph - 真实大小的对象

转载 作者:行者123 更新时间:2023-11-28 06:54:46 25 4
gpt4 key购买 nike

我正尝试在 OSG 中创建逼真的场景,但我遇到了尺寸问题。

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

现在,在现实生活中,一个 1x1x1 米的盒子放在离您 10 米远的地方,其设备尺寸为 10cmx10cmx10cm。我想创建相同的效果。

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

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

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

你有什么建议吗?谢谢!

最佳答案

我的前两个想法是:

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

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

关于c++ - OpenSceneGraph - 真实大小的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com