问题标签 [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.
graphics - 使用插件安装openscenegraph
我在使用 vrml 插件安装 openscenegraph 时遇到问题 谁能提供一些建议?
我正在研究 Snow Leopard,我下载了最新的 OpenVRML 0.18 和 OpenSceneGraph 3.0.1
我可以让 OpenSceneGraph 工作,但是,我需要加载 VRML 文件,当我使用 osg 读取文件时,它说它找不到任何插件。
我尝试通过从源代码编译来安装 OpenVRML,但它无法配置,因为它似乎无法精细 libboost_thread-mt 库文件,即使我已经安装了它,并且链接到它也有效。
matrix - 如何在 GLKit 场景图中实现原点/锚点?
我正在尝试使用 GLKit 在 iOS 上实现一个简单的场景图,但处理原点/锚点让我很适应。要求非常简单:
- 有一个节点图,每个节点都有平移、旋转、比例和原点。
- 每个节点将上面的属性组合成一个矩阵(如果它有父节点,则乘以它的父矩阵)。
- 节点需要尊重其父级的坐标系,包括原点(即禁止平移等。子级的原点应与父级的原点对齐)
所以问题是:
需要执行哪些操作(例如translationMatrix * rotationMatrix * scaleMatrix 等)以及以什么顺序来实现对原点/锚点的正确处理?
PS - 如果您愿意发布答案,请提及您的答案是基于列还是行主要矩阵 - 这对我来说是一个常年的困惑来源。
objective-c - 带有数千个对象的 OS X 上的 SceneKit
我正在关注本教程:http ://blog.bignerdranch.com/754-scenekit-in-mountain-lion/
我对使用 Scene Kit 很感兴趣,但我的场景可能有数千个球体。为了对 Scene Kit 进行压力测试,我尝试了这个:
例如,这适用于 1000 个球体 (10^3),但对于 1,000,000 个球体 (100^3) 则失败(可能不足为奇)。我不介意不能使用一百万个球体,但我想弄清楚合理的上限是多少(5,000?15,000?)以及如何增加它。
我能做些什么来减轻这种情况?例如,我尝试了 sphere.segmentCount = 3,虽然这可以加快渲染速度,但它对内存使用没有太大影响,我怀疑这是限制因素。
此外,似乎没有 SCNPoint 类。我正在考虑在球体数量过多时切换到仅显示一个点,但是我无法从 SceneKit 文档中看到如何显示一个简单的点——我能看到的最简单的是一个三角形。
任何帮助深表感谢。
编辑: @toyos 建议将 SCNSphere 对象合并到单个 SCNGeometry 对象中(前提是它们不需要独立动画,它们不需要),但我找不到一个简单的方法来做到这一点。
SCNGeometry 是通过使用此处[SCNGeometry geometryWithSources:(* NSArray)sources geometryWithElements:(* NSArray) elements]
记录的方法创建的,但我不清楚如何从我的球体创建对象。SCNGeometry
例如对于单个球体,我可以看到使用sphere.geometryElementCount
来获取元素的数量,然后使用它来填充一个数组,使用[sphere geometryElementAtIndex:(NSInteger)elementIndex]
它会给我元素,但我不确定如何获取“源”(或者它们甚至是)。获取几何源的方法是[sphere geometrySourcesForSemantic:(NSString*) semantic]
,但是这个语义字符串是什么?(它的意思是“法线”或“顶点”还是别的什么?文档很有帮助地说语义是“几何源的语义值。”没有说明语义的可能值是什么)
这只是针对单个球体,这将是毫无意义的(因为无论如何SCNSphere
只是一个子类SCNGeometry
),所以现在我必须添加多个球体。那么在将球体的顶点添加到我的SCNGeometry
对象时,我是否必须手动平移它们?
我只是想找出最明智的方法来做到这一点。
opengl - QtQuick 2 中的简单文本项目在屏幕上可见之前会发生什么?
在尝试将 Qt5 移植到 N900 时,我遇到了与 QtQuick2/OpenGL 相关的错误。为了调查这一点,我想现在,会发生什么
直到它在屏幕上可见,换句话说,我想解释一下中间最重要的函数调用(你可以跳过一些字体细节、rtl 相关的东西或类似的东西)。它应该是这样的:
opengl - 在复杂场景中渲染半透明对象
所以我遇到了关于场景图和半透明对象的以下问题......我的问题是我想在一个场景中渲染多个半透明对象。我知道我必须先渲染不透明的物体,然后从后到前渲染半透明的物体。这运作良好......或多或少......
但真正的问题是,例如,我有一个半透明的立方体,白色(或任何其他颜色),alpha 值例如为 0.5。立方体的内部结构在波前 obj 文件中给出,因此给出了立方体单平面的顺序。我不订购对象的单个平面,因为在具有 >1000 个对象和每个对象的 >1000 个顶点的场景中这将太多,所以我只订购整个对象。如果我渲染对象的单个平面并四处移动,就会有这样一个时刻,一个比另一个更近的平面在另一个平面之前被渲染。然后第二个没有被渲染,因为深度缓冲区不允许这样做,这是渲染中的错误。
关闭深度缓冲区不是解决方案:我需要它,因为可能存在半透明和不透明的复杂对象。
任何提示我如何才能实现对象,即使它们很复杂并且既不透明又半透明,以正确的方式呈现?
java - 禁用 PointLight 会引发 CapabilityNotSetException
我有以下代码用于 Java3D 中的灯光。创建场景后,我有一个单独的线程应该关闭灯。当我的代码调用时:
我收到以下错误:
这是我的灯光代码:
而我的主要:
有谁知道为什么会这样?我还应该使用行为与场景进行交互吗?
opengl - 有没有场景图的替代品?
场景图让您可以推断它们的位置 -> 如果不需要渲染一个节点,则该节点的子节点也不需要渲染。
但是,如果场景中的对象不断改变位置,这似乎不是最好的方法,所以你总是必须更新你的场景图。
我想知道是否有完全不同的方法来降低场景复杂性?
java - 获取对组的主要父级的引用 - Java3D
我有以下代码用于在 Java3D 中捕获鼠标点击。我希望最终能够单击场景中的对象并用鼠标移动它。
点击部分对象的输出如下:
这是因为我的 Wall3D / Floor3D 和 Carpet3D 仅由一个基元组成,例如:
地毯3D:
晚餐桌3D:
有人知道我如何获得对我单击的任何对象的主要组的引用吗?
更新:
我有这个有效的代码,但它看起来非常难看。当引用一个只有一层的对象时,会为更高的层抛出一个空指针......
python - 使用 PyOpenGL 渲染场景图
我正在使用 OpenGLContext 将 VRML 文件加载到 SceneGraph 对象中。不幸的是,在我的一生中,我找不到任何展示如何渲染 SceneGraph 的示例。
我已经创建了一个上下文testcontext.getInteractive()
,但是现在呢?如何渲染 SceneGraph?
opengl-es - 引擎渲染管道:使着色器通用
我正在尝试使用 OpenGL ES 2.0(目前为 iOS)制作 2D 游戏引擎。我用 Objective C 编写了应用程序层,并用 C++ 编写了一个单独的自包含 RendererGLES20。在渲染器之外不进行任何 GL 特定调用。它运行良好。
但是我在使用着色器时遇到了一些设计问题。每个着色器都有自己独特的属性和制服,需要在主绘制调用之前设置(在本例中为 glDrawArrays)。例如,为了绘制一些几何图形,我会这样做:
如您所见,此代码非常严格。如果我要使用另一个着色器,比如涟漪效应,我将需要传递额外的制服、顶点属性等。换句话说,我必须更改 RendererGLES20 渲染源代码才能合并新的着色器。
有没有办法让着色器对象完全通用?比如如果我只想更改着色器对象而不担心重新编译游戏源怎么办?有什么方法可以使渲染器与制服和属性等无关?即使我们需要将数据传递给制服,最好的地方是什么?模型课?模型类是否知道着色器特定的制服和属性?
下面显示了 Actor 类:
模型控制器类:class ModelController { class IShader * shader; int 纹理标识;vec4 色调;浮动阿尔法;结构顶点 * 顶点数组;};
着色器类只包含着色器对象、编译和链接子例程等。
在 Game Logic 类中,我实际上是在渲染对象:
请注意,尽管 Actor 扩展了 ISceneNode,但我还没有开始实现 SceneGraph。一旦我解决了这个问题,我就会这样做。
任何想法如何改善这一点?相关的设计模式等?