为什么在 osg 中添加相机后相机不再是另一个相机的子相机?
Why does the camera not remain child of the other camera after adding it in osg?
我正在编写一个基于 OpenSceneGraph 的程序,该程序使用两个摄像头,一个用于为用户呈现预览,另一个使用回调通过 MRT 制作屏幕截图。导出器相机使用正交投影,并且始终使用相同的视图和向上矢量从相同的位置开始,而预览相机可以由用户移动。
启动程序后,我创建了预览相机,将着色器添加到其中,然后设置查看器并将预览相机添加到其中。
之后我创建导出相机,添加它的着色器、纹理和回调,然后我将导出相机作为子相机添加到预览相机。到目前为止,还没有渲染任何内容(即没有进行 frame
调用)。
发出 addChild
调用(即在 VS 中达到断点,进一步我可以看到导出器相机现在是预览相机的子级)。但是,一旦我发出命令实际制作屏幕截图,导出器相机就不再是预览相机的子级(到目前为止,已经进行了一些渲染调用)。
为什么会这样,除了再次添加导出器相机之外,我该如何解决?
旁注:我开始使用 computergraphics.stackexchange.com,这个问题是否适合那方面,或者它是针对算法而不是实现?
如果您使用的是 osg::View,它有自己的主从相机实现 - 请参阅 osg::View headers 了解信息或查看此旧教程的示例:http://thermalpixel.github.io/osg/2014/02/15/rtt-with-slave-cameras.html
我正在编写一个基于 OpenSceneGraph 的程序,该程序使用两个摄像头,一个用于为用户呈现预览,另一个使用回调通过 MRT 制作屏幕截图。导出器相机使用正交投影,并且始终使用相同的视图和向上矢量从相同的位置开始,而预览相机可以由用户移动。
启动程序后,我创建了预览相机,将着色器添加到其中,然后设置查看器并将预览相机添加到其中。
之后我创建导出相机,添加它的着色器、纹理和回调,然后我将导出相机作为子相机添加到预览相机。到目前为止,还没有渲染任何内容(即没有进行 frame
调用)。
发出 addChild
调用(即在 VS 中达到断点,进一步我可以看到导出器相机现在是预览相机的子级)。但是,一旦我发出命令实际制作屏幕截图,导出器相机就不再是预览相机的子级(到目前为止,已经进行了一些渲染调用)。
为什么会这样,除了再次添加导出器相机之外,我该如何解决?
旁注:我开始使用 computergraphics.stackexchange.com,这个问题是否适合那方面,或者它是针对算法而不是实现?
如果您使用的是 osg::View,它有自己的主从相机实现 - 请参阅 osg::View headers 了解信息或查看此旧教程的示例:http://thermalpixel.github.io/osg/2014/02/15/rtt-with-slave-cameras.html