Is there any tool / software that allows me to grab a whole scene from a running application and upload it to a file that can be converted to some popular 3D format such as OBJ?
Yes and no. It is possible to intercept data sent to OpenGL or Direct3D. The problem is that neither OpenGL nor Direct3D are scene graphs. They draw APIs, so everything that you end up with is a bunch of drawing commands.
And these clots do not necessarily refer to an object or entire objects. For example, character drawing in modern games takes place in several passes and fragments (facial animation requires much more complex shaders than the rest of the body).
Technically, you can assume vertex arrays or vertex buffer objects to contain at least whole objects, so itβs prudent to use dumped objects based on calls to glDrawElements or glDrawArrays, as well as used vertex array pointers or VBO offsets.
Immediate mode is showstopper, though: you don't have the slightest amount of information that was displayed when. Technically, you can try several heuristics using the time and order of calls. But it is useless.
Is there any tool / software that allows me to grab a whole scene from a running application and upload it to a file that can be converted to some popular 3D format such as OBJ?
In my local hacker space, a very rudimentary OpenGL interceptor was written for this task. And we encountered all the problems that I spoke of.
source share