问题标签 [openscenegraph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1127 浏览

opencv - 将 IplImage 转换为 osg::Image

如何正确地将 OpenCV IplImage 转换为 OpenSceneGraph 的 osg::Image?

这是我目前的方法。但我得到的颜色数据不正确。

0 投票
4 回答
2082 浏览

c++ - 多个 Qt 小部件描绘不同的 OpenSceneGraph 节点而不会造成性能损失

我们目前面临以下问题:我们有一个应用程序需要在不同的 Qt 小部件中显示大量单独的 OpenSceneGraph 场景。例如,我们可能有一个 Qt 小部件描绘一个球体,而另一个小部件描绘一个二十面体。由于我们使用的是 OpenSceneGraph 3.0.1,因此我们遵循官方文档中的 osgViewerQt 示例来实现这一点。

示例代码使用 aQTimer来强制更新查看器小部件:

当我们想要创建和显示多个小部件时,问题就开始了。由于每个小部件都有自己的计时器,因此性能会随着打开小部件的数量而迅速下降。不仅与 OSG 小部件的交互非常缓慢,而且与其他Qt 小部件的交互也明显滞后。当大约 5 个窗口打开时,即使是中途最近的四核系统也几乎不堪重负。这个问题绝对与我们的图形硬件无关。其他应用程序可能会渲染更大的场景(Blender、Meshlab 等),而不会对性能产生任何负面影响。

所以,总结一下:在不影响性能的情况下,创建多个显示不同 OpenSceneGraph 场景的 Qt 小部件的最佳方法是什么?

我们已经尝试过的:

  • 我们已经考虑过使用单个osgViewer::CompositeViewer来渲染所有场景对象。但是,我们暂时放弃了这个想法,因为它可能会使与单个小部件的交互变得非常复杂。
  • 我们尝试将每个的渲染部分osgViewer::CompositeViewer放在一个单独的线程中,如osgQtWidgets 示例所详述。

我们的第二次尝试(使用线程)大致如下:

然而,这导致了性能的显着下降。每个线程仍然需要很多 CPU 时间(这并不奇怪,因为基本交互仍然由计时器处理)。这种方法的唯一优点是至少可以与其他Qt 小部件进行交互。

对我们来说理想的解决方案是一个小部件,它只在用户与之交互时触发重绘请求,例如通过单击双击滚动等。更准确地说,这个小部件应该保持空闲状态,直到需要更新。有没有可能发生类似的事情?我们欢迎任何建议。

0 投票
5 回答
48106 浏览

c++ - 内存位置异常的 C++ bad_alloc

OSGP.exe 中 0x758cd36f 处的未处理异常:Microsoft C++ 异常:内存位置 0x0028ef70 处的 std::bad_alloc..

我正在尝试在 Visual Studio 中执行以下代码。但是,我一直遇到上述异常。我添加了一个 try catch 来帮助我捕捉错误,但似乎无济于事。我相信问题与输出窗口中的以下内容有关

这是代码:

0 投票
2 回答
2729 浏览

opengl - 在 OpenSceneGraph 的运行时更新纹理

我正在做一个项目,我需要从外部设备视频中捕获帧并在 openSceneGraph 节点上渲染它们。我也在使用 GLSL 着色器。但我不知道如何在运行时更新纹理。对于其他制服,我们需要进行回调,但我们是否还需要为 glsl 和 openSceneGraph 中的采样器进行回调?

我的代码看起来像这样。我现在得到的只是一个黑色的窗口。

0 投票
2 回答
432 浏览

java - 3D 编程截锥体剔除

请在 3D 图形编程中对 Frustum Culling 进行一个很好的解释。我需要学习 3D(到目前为止从未进行过认真的图形编程),而且我很难理解手册中使用的一些术语以及我正在使用的书籍。

我目前正在尝试通读 Java 3D API 规范,因为这些书似乎和这本书一样。

0 投票
3 回答
7164 浏览

c++ - OpenScenegraph 示例代码问题

下面的代码来自一本书。当我尝试运行它时,它失败了

osg::ref_ptr geom = new osg::Geometry();

而且,输出窗口似乎没有包含太多关于它为什么崩溃的信息,只是告诉我它确实发生了。知道我在下面的代码中可能做错了什么吗?提前致谢。

这是我尝试在 Visual Studio 2010(windows 7 64)中运行时出现的 windows 错误弹出窗口

Windows 已在 OSGPracticeLab.exe 中触发断点。这可能是由于堆损坏,这表明 OSGPracticeLab.exe 或其已加载的任何 DLL 中存在错误。这也可能是由于用户在 OSGPracticeLab.exe 获得焦点时按 F12。输出窗口可能有更多诊断信息。

在尝试调试代码时,我能够将问题追溯到新的函数调用。在下面的代码中,似乎跳过了 while 循环,并且为 p(没有分配内存,因此我的 Geometry 对象在下面的代码中返回了一个空值,没有实例化。

下面是我绘制一些形状和显示的程序。

0 投票
3 回答
2928 浏览

collada - 有没有快速将 .dae 文件转换为 .osg 文件的方法?

那么有没有一种快速的方法可以将 .dae 文件(COLLADA)转换为 .osg(OpenSceneGraph)文件?

0 投票
1 回答
212 浏览

python - 由于 osgProducer 链接错误,无法安装 PyOSG

我正在尝试使用pip install PyOSG.

但它失败了这个错误:

我已经安装Producer了依赖于 OSG 的,所以我不应该安装什么来使链接成功。

0 投票
0 回答
454 浏览

c++ - Openscenegraph - 如何创建一个相机无法超越的不可见边界

我是 3d 编程的新手,所以就到这里。我正在尝试模拟一个房间。我没有加载墙壁的图像,但我想在代码中模拟边界。请问我该怎么做?

下面是处理相机移动的代码

0 投票
1 回答
513 浏览

c++ - OpenSceneGraph - 如何添加一堵墙或 3

我需要在我的场景图中添加一堵墙,让它工作,这样我就不能用我的相机越过墙。我正在创建一个实验室场景,但总的来说我对 3d 编程很陌生。我一直在使用 OpensceneGraph 3.0 Beginner's guide 这本书,到目前为止,好的。

我的场景中有几件家具,但我想做的是添加一堵墙,我的相机不应该越过它。我下面的代码,来自本书,Openscenegraph 初学者,似乎没有做任何事情(第 83 页)。我添加了它,我没有看到一堵墙,我仍然可以用我的相机在场景中的任何地方移动。如何在我的应用程序中创建墙。