【问题标题】:OpenGL 3D Mesh Extraction for Linux [closed]适用于 Linux 的 OpenGL 3D 网格提取 [关闭]
【发布时间】:2013-07-24 19:20:17
【问题描述】:

对于 Windows,有许多工具可以通过截取 OpenGL 数据从程序中提取 3D 数据(例如 3D Ripper DX、glintercept、Ogle、OpenGLXtractor、HijackGL)。

有没有类似的 Linux 工具?如果没有,是否可以制作一个? (如果有人有兴趣和我一起开始一个开源项目吗?)

我实际上会自动化这个过程,但那是另一回事了。

【问题讨论】:

  • 是的,有这方面的工具。至少我的黑客空间的另一个成员编写了这个 OpenGL 拦截器库。然而,当涉及到现代 OpenGL(不支持 VBO 等)时,该工具无法胜任。
  • 1) 提取 Google 地球数据的方法更简单(也更压缩),例如拦截您下载的 DEM。 2) 为什么不直接使用他们的 API?除了需要大约 70TB 的空间来存储所有信息之外,您的副本很快就会过时。
  • @datenwolf 您指的是什么“OpenGL 拦截器库”?听起来很有趣。
  • @Robert Rouhani 将数据相交听起来是个好主意。我假设您指的是海拔 API,但我也需要 3D 建筑物信息。我不会保存所有数据,我只需要来自某些特定位置的数据,然后在将其包含到我的服务之前处理这些数据。
  • 工具apitrace 目前不支持您的要求,但它确实有一个开放的任务要求这个。它是 github 上的一个开源项目,这意味着它可能很快就会被添加。如果您有兴趣,这里是该问题的链接:Visualize meshes in draw commands

标签: linux opengl 3d open-source


【解决方案1】:

首先警告一句:OpenGL 不是场景图。 OpenGL 中没有“场景”或“对象”(物理意义上的)这样的东西。 OpenGL 所做的只是在场景中绘制点、线和三角形,一次一个,并且彼此独立。所以拦截OpenGL绘图调用来提取对象本质上是不可靠的。话虽这么说,大多数使用 OpenGL 的程序都以某种方式执行此操作,使得提取渲染的几何图形并将其解释为对象实际上是非常可行的。

我的黑客空间的另一位成员编写了一个用于拦截 OpenGL 调用以提取网格的工具(最初的用途是我们可以在 RepRap 上 3D 打印游戏资产和类似内容)。这个工具的来源可以在这里找到https://github.com/mazzoo/ogldump

但是 ogldump 非常有限。它不支持顶点缓冲区对象 (VBO),交错的顶点数组会搞砸事情,像着色器和通用顶点属性之类的东西是完全闻所未闻的。如果您愿意,请随意修补它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 2020-11-07
    • 2010-09-06
    • 1970-01-01
    • 2017-09-23
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多