问题标签 [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 投票
5 回答
23217 浏览

c++ - 游戏引擎:什么是场景图?

我已经开始阅读 Wikipedia 上的资料,但我仍然觉得我并不真正了解场景图的工作原理以及它如何为游戏带来好处。

  • 什么是游戏引擎开发上下文中的场景图?
  • 为什么我要为我的 2D 游戏引擎实现一个?
  • 场景图的使用是否可以替代具有线性实体管理器的经典​​实体系统?
0 投票
1 回答
1818 浏览

c++ - 2D 引擎的场景图

对于我的实验性 2D 引擎,我想包含一个场景图实现,以良好的性能确定必须渲染哪些对象(对相机可见)。

不幸的是,我对它如何工作的更多细节知之甚少。据我所知,场景图的核心是一个基于树的结构,可以用来更好地组织父子关系。

  • 当目标是确定应该在单帧中渲染什么时,应该如何实现 2D 场景图?
0 投票
1 回答
1515 浏览

android - 如何明确 Opengl ES 材质属性以避免错误的材质被重复使用?

我正在开发一个 Android opengl lib 并遇到了一个小问题。我知道这很容易解决,但我在追踪它时遇到了很多麻烦。简而言之,我正在开发一个 3d 场景图形库,它基于真正轻量级且很棒的 Scenario 2D 场景图形库。深入解释结构需要很长时间,但基本上树中的每个节点都有一个 load(GL10 gl) 方法,在该方法中会发生任何纹理和/或材质初始化。然后有用于形状节点的 draw() 方法,以及用于材质的 killDraw() 方法。

我的材料课程旨在为像我这样从 3d 建模应用程序程序的角度(对我来说是 3ds max)的人来说是用户友好的。这是问题:

我在一个场景中创建了一些 3d 形状:

一切都很好,除了为第一个形状创建的红色材料不仅适用于那个形状,而且适用于第二个形状,即使它有自己的纹理。

这是相关的材料方法

如果我在场景中放置 10 个形状并为形状 1 和 5 添加有色材质,那么 1-5 是第一个材质,6-10 是第二个材质。

我认为我应该能够做的只是调用 gl.glLoadIdentity() 之类的东西并将其清除,但我找不到材料参数。任何人都可以帮忙吗?

谢谢

对不起,我尽量简洁。如果有人对 lib 或更多信息感兴趣,我在 git hub https://github.com/ghostandthemachine/DroidGraph

0 投票
1 回答
1229 浏览

ios - cocos2d 场景可以只占据设备屏幕的一部分吗?

我正在开发一款 iOS 动作游戏,其中玩家在不同的“房间”之间旅行,每个房间都包含在 CCScene 中。当玩家离开一个房间时,下一个通过 cocos2d 提供的美妙的内置过渡“滑入”屏幕。

问题是,我的 UI 控件元素留在屏幕上是至关重要的。他们住在屏幕的底部,而游戏区位于顶部。但是,似乎实际上没有办法限制 CCScene 的大小,使其仅占据屏幕的一部分。

我希望我可以告诉 cocos2d 让 CCScene 节点占据比全屏小的空间:

但到目前为止,还没有这样的工作。CCScene 始终占据全屏。如果我必须将我的 UI 控制元素完全移出 cocos2d 以使其工作,使用视图控制器等等,我什至可以接受。但是现在我很好奇我正在尝试做的事情是否在 cocos2d 中是可能的。

0 投票
1 回答
2116 浏览

opengl-es - 在 OpenGL ES 2.0 上实现场景图

我正在寻找一种在没有固定功能管道的 OpenGL ES 2.0 中实现一些基本场景管理的方法。

glTranslate通常我会实现一个 Node 基类,该基类将使用and应用其转换glRotate,绘制自身(如果有任何东西要绘制),然后调用其子节点的 draw 方法。

有人有使用 OpenGL ES 2.0(或 OpenGL 3.0)实现的示例吗?

0 投票
2 回答
1610 浏览

opengl - 3D场景图遍历问题

我已经实现了一个由 OpenGL 渲染的小场景图,所有对象都派生自一个公共Node类,在 OpenGL 帧渲染期间,我只调用visit根节点的方法,它递归地遍历图。我开始遍历时传递的第一个矩阵是相机矩阵。

visit方法如下所示:

我遇到的问题是,当我为子节点设置旋转时,旋转是相对于父节点发生的,而不是围绕节点本身。谁能发现我在这里做错了什么?

0 投票
1 回答
668 浏览

2d - 在二维场景图中应用变换

在二维场景图中:当我在节点中执行旋转或其他变换时,我应该如何在子节点中应用这些操作?如果我在每个孩子身上应用这个手术,可能会花费很多时间。我想当应用程序渲染场景时,在每个节点向下的全局旋转中添加了当前节点旋转。平移和比例也是如此。当图表中上升时,这些全局属性被减去。有没有更好的办法?

0 投票
3 回答
3296 浏览

matrix - 3D 相对于绝对变换

我正在尝试为我的 3D 游戏创建一个场景图,其中每个对象的转换都相对于它的父对象。图的每个节点都有一个旋转、缩放和平移向量。

组合相对变换矩阵以获得对象的绝对变换的正确方法是什么?如果您也可以解释您的解决方案,我会很高兴。


这是一个错误的例子:
这实际上是解决方案:

在这种情况下,当父节点旋转、缩放或移动时,子节点的变换量相同,这是正确的行为! 但是孩子只会围绕自己的原点旋转,不会围绕父母的原点移动。


应用:

有一个有四个轮子的汽车模型。车轮相对定位在汽车的原点周围。轮子可以像真正的轮子一样旋转。如果我现在旋转汽车,轮子应该始终与它相连。在这种情况下,汽车是根节点,车轮是子节点。

另一个例子是太阳系的模型。行星围绕自己的轴旋转,围绕太阳移动,卫星围绕行星运行。

0 投票
4 回答
8981 浏览

qt - 将 OpenSceneGraph 与 Qt 集成

我在 Qt 上摆弄了 OpenGL。但现在我想要复杂的场景。(加载了多个 COLLADA/MD2 模型)。

为此,我正在考虑使用 OpenSceneGraph (OSG)。是否可以将 OSG 与 Qt 集成?如果有怎么办?

谢谢。

0 投票
1 回答
778 浏览

java - 为 Java 游戏生成简单的场景图

我正在使用 OPENGL(通过处理)在 Java 中开发一个相对简单的游戏。我使用的是典型的 MVC 模式,游戏更新使用观察者模式传递给处理小程序。我想实现一个相对简单的场景图,程序的模型端可以更新,视图端可以读取。到目前为止一切都很好,但场景图对我来说是新的,而且我很难想出一种体面的方式来生成场景图。

模型端目前有两个游戏实体集合,一个用于游戏中的单位,另一个用于环境对象。我可以简单地遍历这些并生成节点以添加到场景图中。我不确定的是当这些实体之一被更改或销毁时该怎么办。我是否再次生成整个树(似乎效率很低)或者每个实体是否应该“知道”它的场景节点并能够在需要时更新它?

有没有人有关于如何生成场景图的一般建议或材料链接?