问题标签 [qt3d]

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 投票
2 回答
1086 浏览

c++ - 在 ubuntu 上编译 qt3d

我试图按照http://doc.qt.nokia.com/qt3d-snapshot/qt3d-building.html#installing-plugins

在它坚持的所有编译过程之后:

我该如何编译它?有办法找到ubuntu的二进制和-dev版本吗?

也许是针对 64 位架构的?

0 投票
2 回答
960 浏览

compilation - 在没有 Qt 源代码的情况下编译 Qt3D

我在使用 Qt3D 时遇到了困难。我无法设法从源代码编译它。如果可能的话,我想编译 Qt3D 而不编译 Qt 本身。它可以链接到已经编译的 Qt 吗?

  • 操作系统:Linux Ubuntu 11.10(oneiric)x86_64
  • Qt版本:4.7.4
  • 制作输出:

    cp:无法创建常规文件/usr/include/qt4/Qt3D/qt3dglobal.h': No such file or directory make[2]: *** [/usr/include/qt4/Qt3D/qt3dglobal.h] Error 1 make[1]: *** [sub-threed-make_default-ordered] Error 2 make: *** [sub-src-make_default-ordered] Error 2 global/qt3dglobal.h /usr/include/qt4/Qt3D/qt3dglobal.h make[2]: Leaving directory/home/soroush/programs/programming/libraries/qt3d-1.0-src/src/threed' make[1]:离开目录`/home/soroush/programs/programming/libraries/qt3d-1.0-源/源'

0 投票
1 回答
752 浏览

qt - Qt3d + glShadeModel

最近我开始使用 qt3d(使用它的 QGlView 和 QGLSceneNode)。我为生成的模型提供每个顶点法线,现在想为我的建模应用程序使用 GL_FLAT 着色模型。但是对 glShadeModel(GL_FLAT) 的简单调用并没有做任何事情 - 阴影看起来像在平滑模式下

我试图找到 qt3d/qopengl 调用该函数的位置,但除了 QGLBuilder 找不到任何东西。

在我看来,我必须对 QOpenGLContext 做一些事情才能使本机 opengl 函数工作(我对其他一些 opengl 函数也有同样的问题)

或者 QGLPainter/QGLSceneNode 内部设置着色模型,我根本不用它?

0 投票
1 回答
205 浏览

windows - 在 Windows 中编写 Qt3D 应用程序

我将在 Windows 中编写 Qt3D 应用程序。我还安装了必要的工具,但编译后我收到“未解析的外部符号”错误。解决办法是什么?

注意:我的编译器是 microsoft visual c++ 9.0

0 投票
0 回答
631 浏览

c++ - 关于设置带有冗余对象的 Qt3D 场景的建议

我是 Qt3D 模块的新手,目前正在使用 Qt3D 在 Qt5/C++ 中编写游戏。这个问题是关于“我在正确的道路上吗?” 或“你能给我一些关于......的建议吗?”。

游戏的场景有一个静态部分(“世界”)和一些对象(建筑物和可移动单位)。一些建筑物在未来可能会被激活,但其中大部分是非常静态的(但当然是可破坏的)。

我将问题分为两部分:如何处理放置在场景中不同位置的相同模型的副本以及如何在查看器类中将场景作为一个整体进行管理。

场景中的冗余对象:

当然,这些对象共享相同的建筑物/可移动单元库,因此对于此类单元的每个实例,将这些对象的模型上传到图形卡将是愚蠢的。我通读了 QGLSceneNode 的文档,从中我猜它旨在在多个场景节点之间共享相同的 QGeometryData,但应用不同的转换以便将对象放置在场景中的不同位置。我猜,为建筑物的所有实例共享相同的 QGLSceneNode 是错误的方式。

我目前有一个单元“库类”,告诉我每种类型的建筑物/可移动单元的属性,其中包括几何图形,包括纹理。现在,我将为这个库类中的每个建筑物提供一个 QGeometryData,它在游戏的加载过程中上传(如果我决定在启动时对所有建筑物执行此操作......)。

创建单元的新实例时,我现在将创建一个新的 QGLSceneNode,从库中请求 QGeometryData(显式共享)并将其设置在节点上。然后我为这个新节点设置转换并将其放入我的场景中。这将我们引向我问题的第二部分:

整体管理场景:

我的“场景”目前既不是 QGLSceneNode 也不是 QGLabstractScene,而是一些 QGLSceneNodes 的结构,一个用于场景中的每个对象(或对象集合)。我看到三种方法:

  • 我目前的方法,但我想这是“错误的方法”。

  • 组成:将所有内容作为子节点放在一个根 QGLSceneNode 中。这对我来说似乎是正确的方法,直到我意识到在这样的组合中访问特定节点非常困难。但是我什么时候甚至需要访问这样的“特定”节点?大多数操作需要考虑所有节点(渲染它们,更新动画位置),甚至在信号槽基础上操作,所以我什至根本不需要手动找到节点。例如,动画可以使用 QPropertyAnimations 完成。也可以通过将游戏引擎核心中的QObject(所有建筑物都是引擎核心部分中的QObject)与相应的QGLSceneNode连接来对事件进行操作。

    但这种方法还有另一个缺点:在渲染过程中,我可能需要更改 QGLPainter 的一些属性。我不确定我需要更改哪些属性,这是因为我对 Qt3D 了解不够,无法猜测不更改属性可以做什么(例如:使用特定着色器渲染特定场景节点) .

  • 然后我找到了QGLAbstractScene,但是和上面的两种方案相比,我看不出有什么优势,因为我无法定义场景中的渲染过程。但也许它不是定义它的正确位置?

在 Qt3D 中管理这样一个场景的最佳方法是什么?

“最好”是指:我会做错什么?我能做些什么更好?我还应该考虑哪些其他事项?我是否忽略了 Qt3D 库中的任何重要内容?

0 投票
2 回答
3140 浏览

c++ - Qt3D中QGLView(不是QGLWidget)的重绘和渲染后效果

我目前正在使用 Qt3D 模块在 C++/Qt5 中编写游戏。

我可以在 QGLView 上渲染场景(QGLSceneNodes),但现在我坚持使用一些 GUI 元素对场景进行重绘。我还没有决定是使用 QML 还是 C++ 来定义界面的外观和感觉,所以我对两者的解决方案持开放态度。(请注意,QML 模块称为 QtQuick3D,C++ 模块称为 Qt3D,它们都是 Qt5 的一部分。)

我非常喜欢基于 QML 的解决方案。

我怎样才能做一些过度绘画?

以下事情必须是可能的:

  • 在给定的屏幕坐标处绘制 2D 项目(图像),当然支持 alpha 通道。
  • 使用系统字体绘制文本,可能首先在图像上绘画并将其用作 Qt3D OpenGL 上下文中的纹理。
  • 对屏幕坐标中的鼠标输入做出反应(与 3D 场景对象拾取相反)。

我认为这一切都是可能的,只需将另一个 QGLSceneNode 用于 2D GUI 部分。但我认为定位和定向某些场景节点以便在渲染期间重新定向和重新定位(使用顶点着色器)没有意义,会引入数值错误并且似乎效率低下。

使用另一个“GUI”顶点着色器是否正确?

(如何)我可以使后期渲染效果和重绘一起工作吗?

如果我能做以下渲染后效果,那就太好了:

  • 阅读之前渲染的场景,应用一些 2D 图像效果(我可以想象将它们实现为片段着色器,并使用此效果着色器在最终屏幕上渲染之前渲染的缓冲区)。这使我能够使 GUI 的某些部分看起来像具有模糊效果的玻璃。
  • 一些更高级的效果可以使场景看起来更逼真:深度和运动模糊、热相关的空气闪烁、发光效果。它们都可以使用片段着色器(这不应该是问题的一部分)和渲染期间的附加缓冲区来描述。它们应该放在主屏幕渲染过程和 GUI 重绘之间,这就是我将它包含在这个问题中的原因。

当我使用特殊的着色器程序实现重绘时,我发现了一个问题:我无法访问 GUI 后面的像素以应用高斯模糊等效果来使 GUI 看起来像玻璃。我必须将场景渲染到另一个缓冲区而不是 QGLView。这是我的主要问题...

0 投票
0 回答
804 浏览

qt3d - 在 QGLView 中的 QGLNode 上绘制 QWidget

我使用 Qt3D 并使用 QGLView 绘制复杂的 3d 场景。

我需要在这个场景中的 QGLNode上绘制一些小部件,但我不知道如何。

这是我想做什么的一个最小示例(基于 qt3d 的“嵌套”演示):

标题:

初始化:

油漆代码:

绘制立方体:

当“#define DRAW_GLNODE”处于活动状态时,它将旋转立方体显示为另一个立方体内的纹理(您可以在左侧窗口中看到帧缓冲区数据)。

http://i.stack.imgur.com/Ok4NT.png

当我切换到“#define 0”时,它在 QGLView 中显示黑屏,但 QGLFrameBuffer 包含您可以看到的数据。

http://i.stack.imgur.com/5R6Wz.png

我究竟做错了什么?

0 投票
0 回答
350 浏览

opengl - Rendering texture to simple shape using QGLSceneNode

I am attempting to render a texture to a simple shape using QBuilder and QGeometryData but I can not get the texture to display, what am I doing wrong?

I have created a QGLSceneNode which builds the texture and attempts to use generateTextureCoordinates to map the texture coordinates.

EDIT Mapping the texture coordinates by hand seems to work, but generateTextureCoordinates should work.

[My class is a child of QGLView]

0 投票
1 回答
610 浏览

qt-creator - Qt Creator 无法识别 Qt3D

我刚刚在我的机器上构建并安装了 QtQuick3D。我运行示例项目“立方体”。它有效,我可以构建和执行它。它向我展示了一个可以用鼠标旋转的立方体。但是在 QML 编辑器中,我在所有 Viewport 和 Item3D 类型上都出现错误。感觉好像 Creator 无法识别该模块(尽管导入工作)。将鼠标悬停在多维数据集上时,我得到“提示”:无法解析多维数据集的原型 Item3D

我正在使用 Ubuntu 12.04。

http://i.stack.imgur.com/vke5f.png

是否有一些我忘记的设置,或者我该怎么办?

谢谢!

0 投票
2 回答
5098 浏览

qt - Qt3D 是 Qt5 的一部分吗?

我已经在 windows 中安装了 Qt5 库,但是 Qt 助手中没有关于 Qt3D 的文档。Qt3D 是 Qt5 的一部分还是已从发行版 5 中删除?