Google Earth to OBJ Using GLIntercept
- July 8th, 2013
- Write comment
In a recent post, I touched on a workflow to export models from Google Earth into UDK. However, what if you wanted to repeat this process for an entire city? Manually exporting every building one at a time would be extremely tedious and a complete waste of time since the models in Google Earth are low-res and would have to be re-created (again) at some point anyways, one at a time, for the final UDK product. No thank you. In such a scenario what we really need is an entire 3D city exported from Google Earth to serve as a TEMPLATE. And then later we can then replace each and every building with a high-res model for our final UDK product. Sound good? Then let's get started.
For starters, I came across an article that details this exact scenario. However, being nearly 4 years old (as of 2013) the article is quite dated, has dead links, and is otherwise missing some very critical pointers. What follows is an updated overview of the same process from that article, with additional notes and steps to follow.
Prerequisites:
I wrote the following some time ago, and no longer can assist with troubleshooting. The fact is, this technique/software was already 5+ years old when I came across it, and as time goes by, it only becomes older and more unsupported. I will not be answering any further comments on this thread, as I cannot help and have myself moved on to 3D Ripper DX. That being said, if you still wish to proceed, take it slow, read everything, and good luck!!!
Prerequisites:
- GoogleEarth: v5.0 [download] [mirror].
- GLIntercept: v0.5 [download] [vendor].
-
OGLE: v0.3 beta [download] [ mirror] [
vendoroffline]. - 3D modeling software to import OBJ files, such as: Maya, 3DStudioMax, Rhino, Blender, etc.
Setup Instructions:
-
Install Google Earth. The installer will install GE into Program Files (x86) by default (on modern Windows 7/8 systems). To mitigate known issues running programs from the x86 directory, after the install I then copied the Google Earth folder to the root of my C drive. Henceforth, I ran Google Earth from the C:\ root folder only.
Copy Folder: C:\Program Files (x86)\Google\Google EarthTo: C:\Google Earth
-
Install GLIntercept. Likewise, the installer will install this into Program Files (x86) by default (on modern Windows 7/8 systems). Again, to mitigate known issues running programs from the x86 directory, after the install I then copied the GLIntercept folder to my Program Files folder.
Copy Folder: C:\Program Files (x86)\GLIntercept0_5To: C:\Program Files\GLIntercept0_5
-
Extract OGLE plugin into the GLIntercept0_5\Plugins folder and rename the OGLE folder from "ogle-0.3b" to "OGLE". Your OGLE plugin files should reside in the following folder:
C:\Program Files\GLIntercept0_5\Plugins\OGLE
- Copy "OpenGL32.dll" from "C:\Program Files\GLIntercept0_5" into "C:\Google Earth".
- Make a copy of the "opengl32.dll" located in your "C:\Windows\SysWOW64" folder and rename it to "opengl32.orig.dll".
- Cut "opengl32.orig.dll" from your "C:\Windows\SysWOW64" folder and Paste it into "C:\Google Earth". You should now have both "OpenGL32.dll" and "opengl32.orig.dll" in your "C:\Google Earth" folder.
- Download this zip and extract the "gliConfig.ini" file into "C:\Google Earth".
- Open Google Earth (from "C:\Google Earth") and go to Tools > Options and set the Graphics Mode to OpenGL. All other settings are up to you. I left mine at default. Apply changes and close Google Earth.
- If you haven't done so already, install your 3D modeling software now. Most all 3D applications come with a trial that you can utilize for testing purposes.
Capture GoogleEarth Geometry:
- Open Google Earth (from "C:\Google Earth"), and navigate to whatever zip code/city you wish to capture. Keep that folder open so you can see any new files created in it from the following steps.
- Setup your camera angle/view so all the buildings you want are in view. However, before it finishes rendering all the buildings, start your capture.
-
Press CTRL+SHIFT+F at the same time to capture. GoogleEarth may freeze up for a few seconds, depending on how many buildings are being rendered, so be patient as it extracts the geometry.
Note: you may need to Middle Mouse Button click inside Google Earth to ensure it is the active window. Most important though is to ensure Google Earth is still rendering buildings before you start the capture, otherwise GLntercept may not work and you will have to close Google Earth and start over, or try changing your Camera Angle to for Google Earth to render more geometry.
- After the capture has started and Google Earth unfreezes, you will now see an "ogle.obj" file in your Google Earth folder, "C:\Google Earth". Some additonal log files and folders will be created as well, but they are not needed at this point. Depending on how many buildings you captured, you should expect the "ogle.obj" file to be 10-100MB or more.
Import OBJ Into 3D Application
I will be using Maya to explain the remaining steps, as it is my preferred 3D modeling application. The steps will be similar for other applications however.
- Open Maya and go to File > Import. Navigate to "C:\Google Earth" and select your ogle.obj file and press OK to import.
- After navigating your camera around a bit, you may be dismayed to only see what looks like the border/menus of Google Earth, and no buildings!
- Rest assured your building models are there. They are just EXTREMELY tiny!
- Zoom into the Origin of your scene and drag select around until you select what appears to be nothing. You will know you have your buildings selected when your Heads Up Display jumps from 0 to several hundred thousand Verts. To enable the Heads Up display, go to: Display > Heads Up Display > Poly Count. You will also see a tiny white blip indicating your selection.
- Select your Scale Tool, and drag the center yellow box (origin) to the right. You will see your buildings pop into existence!
- From here on out, its a simple matter of scaling, rotating, and modifying your model to your specifications, like so:
That should be it. You now have a workflow to export entire cities from Google Earth into your Modeling application of choice.
I neither support nor condone the use of copyrighted models/assets from Google Earth in personal projects without the the express written consent from the original model authors. My own goal is to utilize an exported Google Earth model purely as reference, to be replaced by my own work.
Final Notes
With regards to mapping Google Earth textures to the buildings in our obj file: You should notice the "CaptureTextureCoords " option in the OGLE settings in the gliConfig.ini file – that should get you the texture coordinates – but linking with the textures I believe has to be done manually. (I did not write OGLE so I don't know for sure – there is nothing in theory preventing it for working, I just thought it was un-implemented).
The OGLE Plugin for GLIntercept will work on any 32bit application that uses OpenGL. And while OpenGL is becoming less and less common these days, if you do a bit of digging around, you can still find games and applications that still do. For instance, anything written using the idTech3 engine uses OpenGL. By simply copying the gliConfig.ini, OpenGL32.dll, and opengl32.orig.dll files into my Return to Castle Wolfenstein folder, I was able to capture character models with ease. Pretty cool, right?
WARNING: You will only want to test this on a local game server. If you join a public game server with these files in your game directory, you may be kicked/banned/etc for trying to run a game exploit of some kind. This happened to me in RTCW. You have been warned!