问题标签 [scenegraph]

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 回答
390 浏览

raytracing - 在光栅化或光线追踪时如何最好地使用场景图?

所以这是我的计算机图形学决赛中的一个问题,我仍然不知道答案。

什么是场景图?在分别对图像进行光栅化或光线追踪时,如何最好地使用它?

场景图是一种管理分层转换的方法。但是,我不知道如果您通过光栅化或通过光线跟踪生成图像是否会有所不同。

希望有人能启发我。

0 投票
1 回答
1774 浏览

javafx-2 - 用于不可见节点的 JavaFX 2.2 Mouseevent

我正在尝试为 JavaFX 2.2 中的不可见节点接收 MouseEvents。将其视为一个交互式但不可见的区域,它应该触发一个动作,例如当鼠标悬停它时。问题是,这不是一个静态定义的区域,但有多个区域(很多)可以由应用程序移动和调整大小。因此,对于我的用例来说,全局监听鼠标移动并执行手动检测 - 比如 - MouseMove-Events 将是很多开销。

目前,我正在试验一个透明的矩形new Rectangle(200, 100, Color.TRANSPARENT)(也必须在这些透明区域上检测到 MouseMove)。

我还希望得到帮助我更好地理解 JavaFX 2.2 通常如何根据节点的可见性处理 MouseEvents 的答案。

到目前为止,我的实验显示了以下一般见解:

  • 给定一个透明的场景:当用户点击一个透明区域时,鼠标事件只会被传递给外部应用程序(在场景下方)。当用户单击场景的可见像素时,无法将鼠标事件“传递给操作系统”。对?

  • 默认情况下,其他节点顶部的窗格将吞下任何 MouseEvent,除非它是 MouseTransparent 或 MouseClick 出现在不可见(透明)区域。

  • pickOnBounds(true|false)是否可以启用(true)基于边界(矩形)的 MouseEvents 检测或禁用它(false)。后者仅有效处理可见像素/区域的鼠标事件。pickOnBounds(true)似乎不适用于完全不可见的节点。对?

  • 我的实验表明,一个节点至少需要填充 -new Color(1,1,1,0.004)才能被视为可见。较低的 alpha 值被认为是不可见的,这会导致 MouseEvents 不被处理,即使pickOnBounds(true)已被调用。

我做对了吗?那么就没有办法让一个不可见的节点接收 MouseEvents。

还是对工作有特殊要求pickOnBounds?我是否需要仅在显示节点或类似内容后调用它?还有其他建议吗?

0 投票
1 回答
257 浏览

javascript - 为此,我应该使用哪个 HTML5 Canvas 库?

我是 HTML5 和 Javascript 的新手,但我需要使用它们进行可视化。

这是我的域/问题:

  1. 我需要可视化一大组图形节点,视觉上一个节点可以是一个具有颜色和透明度的循环。

  2. 有两种关系:includeinteract

  3. include表示一个节点包含其他不同类型的节点,从视觉上,用户可以看到一个大节点,其中包含较小的节点。

  4. interact仅仅意味着一条线连接不同的节点。线条应该有箭头、标签(文本)和粗细。

  5. 对于效果,我需要动画,例如节点不是静态的,但其中一些应该有浮动的动画(围绕中心位置的少量规则浮动运动);或者某些节点应该具有像呼吸一样的脉冲效应。

  6. 用户可以拖动一些节点,如果拖动一个节点,所有连接的节点/图形应在连接时相应移动。

  7. 自动检测碰撞应该到位。此外,如果发生冲突,所有节点都应该遵循一些算法来很好地分布。


这是我的问题

  1. 我应该使用哪个 Canvas 库?因为无论如何我都是新手,所以一个适合我需要的漂亮简单的是最好的。

  2. 我应该寻求什么算法来制作浮动和脉冲(呼吸)动画?

  3. 我应该使用什么算法来拖动节点并且所有连接的节点都像蛇一样跟随?

  4. 我应该使用什么算法进行碰撞和分布?

谢谢

0 投票
1 回答
1923 浏览

qt - 如何使用 QSGSimpleTextureNode?

我试图了解如何使用 QSGSimpleTextureNode 但 Qt 文档非常模糊。我想在场景图上渲染文本,所以基本上我想要的是用所有字形绘制一个纹理,然后在 QSGSimpleTextureNode 上设置该纹理。我的想法是使用标准 OpenGL 代码创建纹理,并将纹理数据设置为我刚刚创建的数据。我找不到一个例子来告诉我如何实现这一点。

0 投票
2 回答
1662 浏览

javafx - 如何监听特定节点的 JavaFX SceneGraph 的可见更改

我们在 JavaFX 中创建了一个小型绘画应用程序。出现了一个新要求,我们必须警告用户他进行了更改,这些更改尚未持久化并询问他,用户是否愿意在关闭之前先保存。

示例快照:

画布图像

不幸的是,有很多不同的节点,并且可以通过多种方式更改节点,例如多边形点可以移动。节点本身可以​​拖动。它们可以旋转等等。因此,在为 Node 对象对画布的每一次可能更改触发无数事件之前,我想问一下,是否有人对如何简化这种方法有想法。我很好奇,如果有任何听众,我可以在 JavaFX 的场景图中收听画布对象的任何变化。

特别是因为我只想知道是否有任何变化,而不需要知道具体的变化。

此外,我也不希望获得每个事件,例如简单的选择,这会导致在所选节点周围显示边框(如图所示),这并不意味着用户必须保存他的离开前申请。

有人有想法吗?或者我真的需要为节点中的每一次更改触发事件吗?

0 投票
2 回答
160 浏览

qt - QSGNode可以继承QObject吗?

QSGNode 可以继承 QObject 并连接信号和槽吗?我已经尝试过,但只有在渲染完成时才会调用该插槽。

我有一个细胞矩阵。我正在使用 QML 在二维 ListView 上显示它们(每个委托都有一个 ListView 的 ListView)。这缺乏性能,所以我改为使用 SceneGraph。问题是数据模型。我现在正在传递一个 QList,其中 column 有一个 QList。每行都有具有信号的单元格。这些细胞发生变化。我想通知这些信号的渲染更新。在我有更好的解决方案之前,我的解决方案是让每个单元格在各自的列上触发一个更改的信号,这反过来将打开实现场景的主 QQuickItem 上的更新标志。

想法?

0 投票
1 回答
219 浏览

c++ - 如何查找 QuickItem 是否在 QmlScene(z 顺序)中位于最顶端?

目前我正在使用 QtQuick 在 Qt / Qml 中进行开发。我到了一个点,我需要找出我的场景中的一个项目是否在最上面。也就是说,我需要查找该项目是否具有最高的 z 坐标。我尝试使用 childAt 和 mapToScene 构建算法。事实证明,这非常慢。然后我发现了 itemAt()。不幸的是,它仅在 GraphicScene 中可用,即在小部件世界中。

现在我的问题是:QmlSceneGraph 中是否有与 itemAt() 等价的东西?我怎样才能知道,如果一个项目是最上面的?我什至不需要确切的 z 顺序,只是为了确保项目显示在顶部。

谢谢你的帮助。

来自德国的问候

0 投票
0 回答
712 浏览

libgdx - libGDX 中的 3D 场景图

这是我在与 JOGL 合作近 6 个月后尝试 libGDX 的第一天。

问题: 我需要一个解决方案来在运行时动态地将 3D 模型绑定到其他模型。我正在设计一个简单的 3D 斗狗游戏,并且在游戏过程中需要更改硬点中的武器。

我尝试了什么: 来自 JOGL 背景,我认为使用 Matrix 堆栈来实现我自己的场景图-libGDX 没有 3D 场景图。但是,由于 libGDX 贬低了 OpenGL 1.0,我找不到 push/pop 矩阵。另外,我知道我可以通过 instance.transform 对对象应用转换,但想不出用它实现场景图的方法。

是否有内置的 libGDX 用于此?

0 投票
1 回答
88 浏览

c++ - 了解场景图和图边

所以我试图在我的代码中使用场景图和节点(C++ 中的游戏编码),我想我了解它们的基础知识以及它们是如何使用的(我绝对可以看到它的好处),但是我我遇到了“图形边缘”一词,我找不到任何阅读材料来准确解释它们是什么以及它们如何与对象层次结构中的场景图/树/节点相适应。

如果有人知道任何好的材料或对什么是图形边缘以及它们如何适应(在使用和实现中)有自己的答案,那就太好了。

谢谢

0 投票
0 回答
53 浏览

opengl - opengl中场景图的不同数据类型

我为我正在开发的城市创建了一个简单的场景图。有一个地面是一个平面和建筑物(由立方体和金字塔屋顶组成)。它们都是模型类型,我可以将它们添加到场景图中,因为它们都是相同的数据类型。如果想在场景图中添加一些不是 Model 类型的东西,我该怎么做?例如,我想添加一盏灯。

我用这个让我开始: http ://research.ncl.ac.uk/game/mastersdegree/graphicsforgames/scenegraphs/Tutorial%206%20-%20Scene%20Graphs.pdf

也许为了更好地解释我的问题,如果从那个教程中我想添加到场景图中的网格以外的东西怎么办?