问题标签 [openinventor]
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.
c++ - 大于 GL_MAX_VIEWPORT_DIMS 的视口平铺渲染
我正在创建一个采用 OpenGL 场景图并用于QGLFrameBufferObject
渲染结果的类。为了支持(实际上)无限大小,我使用平铺来提取许多可以在渲染所有平铺后组合成大图像的小图像。
我通过glViewport
为整个图像设置glScissor
视口(这适用于高达 的分辨率GL_MAX_VIEWPORT_DIMS
,但会导致超出此限制的空图块。
我应该如何解决这个问题?我需要改变相机还是有什么巧妙的技巧可以做到这一点?我正在使用 Coin/OpenInventor,因此也非常欢迎针对这些框架的任何提示。
c++ - Open Inventor 中的 SoRayPickAction?
抱歉,如果这是重复的,但我正在尝试找出 Open Inventor 中 SoRayPickAction 的实现。我正在尝试实现它,以便在单击鼠标时选择一个特定节点,以便我可以平移、旋转等。我有三个节点:桌子、灯和框架(相框)。但是,我不认为我的代码完全正确。我也有各种方法,例如 MouseButtonCallback(它将检查鼠标是否被单击,然后使用导航器)和 MouseMoveCallback(相同的想法)。所以这是我的代码,但你有什么建议吗?现在,好吧,它什么也没做。
您是否还知道 OpenInventor 中可以在场景中“放置”节点的动作,即将台灯放置在桌面上,将框架放置在墙上等。是否带有路径?不幸的是,我什至不知道我在寻找什么。非常感谢你的帮助!!
编辑:这看起来怎么样?SoSeparator *desk2; SoSeparator *lamp2; SoSeparator *pic_frame2; SoSeparator *选中;
c++ - 如何识别分隔符以及如何将其与路径一起使用 Open Inventor
我的场景图中有一些分隔符,例如桌子、灯和框架。当我将它们添加到一个名为“root”的分隔符中时,它们会被制成节点吗?就像我想将它们与路径一起使用一样,是否有与 path->containsNode 等效的分隔符?
另外,有没有办法识别分隔符?假设我想在桌子上放一盏灯。我认为最好的方法是检查灯是否与特定的分隔器(如桌子)发生碰撞?
谢谢!
ocean - Petrel & Ocean 2012.1 中有哪个 Open Inventor?
我知道 Petrel & Ocean 2012.1 版本即将发布。因此,我想知道将使用哪个版本的 Open Inventor,以及在哪里可以找到有关它的更多信息。
c++ - OpenInventor 到 PCD:无法将 RGB 转换为十进制
我正在编写一个小程序来将 OpenInventor 文件转换为 PCD 文件。为此,我输入了两个文件,即 OpenInventor 文件和 JPEG 图像。纹理坐标是介于 0.0 和 1.0 之间的浮点值。
我使用 OpenCV 提取 RGB 值并以十进制格式返回,但是下面的函数似乎无法正常工作...
我加载图像
opengl - 找出硬件是否支持特定的 OpenGL 功能
如何确定硬件是否支持特定的 OpenGL 功能?就我而言,我想知道硬件中是否可以使用双面照明。使用 OpenInventor 的方法也一样。
c++ - 将 Coin3D SoOffscreenRenderer 转换为 QImage 并使用 OpenGL 渲染
我正在尝试使用 QT 在 a 中显示 Coin3D/Open Inventor 场景,QGLWidget
我SoOffscreenRenderer
需要帮助将其转换为QImage
到目前为止,我尝试的是渲染场景SoOffscreenRenderer
并获取缓冲区,如下所示:
然后QImage
从缓冲区数据创建一个:
这是正确的方法吗?
正如这个关于绘制 QImage的问题中所述,如果源是图片,我可以绘制它。
e:为了确保我的缓冲区确实包含一个场景,我将缓冲区内容写入两个文件。例如,您可以使用 IrfanView 及其插件查看 .rgb 和 .ps 文件。
e2:刚刚想通了,我必须使用img.rgbSwapped()
. 现在它显示了黑白且没有闪电的场景。我会进一步调查。
e3:使用这样的代码,您需要以这种方式调整OpenGL调用以进行彩色渲染
第一种格式是 GL_RGB,第二种是 GL_RGBA。立方体仍然是完全黑色的。
e4:这是我的场景中的一个错误,您必须在添加其余部分之前添加灯光,尤其是在添加相机之前。
我想出了如何使用 OpenGL 绘制 QImage,请参阅此线程。所以缓冲区或它的转换似乎有问题。
c++ - Coin3D 中未处理的异常错误(打开 Inventor)
我想创建一个通用函数来搜索节点中的类类型并返回其地址。它定义如下
但是当我传递像 SoCoordinate3::getClassTypeId() 这样的搜索类型和要搜索 senode 的节点时,如下所示:
但最后一行是生成一个未处理的异常错误。请告诉我在这里做错了什么。最后一行是有效的,因为在函数范围内写入的相同内容有效,但在这里不可用。
c++ - 设置 3D 环境参考
我正在设置一个 Frustum 相机来创建一个虚拟现实环境,当你看着屏幕时,它看起来就像一个窗口。我检查了 SoCamera、SoFrustumCamera、SoPerspectiveCamera 和 SoOrtographicCamera 的所有文档,但找不到设置场景以使其边界与屏幕边界匹配的方法。
我想做这样的事情......
https://www.youtube.com/watch?v=Jd3-eiid-Uw
我的代码的问题是整个场景移动,而不仅仅是场景的“后部”。它看起来是 3D 的,但看起来不像真正的窗户那样身临其境。
有没有人有提示或可以帮助我?我使用 OpenInventor 用 C++ 编写代码。谢谢!!
c++ - Error Using Qt 5.3.1 with Open Inventor 9.4.1 with visual2013: C2371:"GLdouble redefinition"
I'm programming using Open Inventor, I've included SoQt.h.
When I complile a simple code, an error occour:
C:\Open Inventor\9.4.1 C++ Visual2013 x64\include\Inventor\sys\SoGLType.h:39: error: C2371: 'GLdouble': redefinition. different basic types. ......\Qt\5.3\msvc2013_64\include\QtGui/qopengl.h(98): see declaration of 'GLdouble'
I'm using Open Inventor 9.4.1 Qt 5.3.1 on Qt creator 3.2.0. I compile with VIsual C++ compiler 12.0 (x86) on Windows 7