Google Earth to OBJ Using GLIntercept

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:

Setup Instructions:

  1. 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 Earth
    To: C:\Google Earth
  2. 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_5
    To: C:\Program Files\GLIntercept0_5
  3. 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
  4. Copy "OpenGL32.dll" from "C:\Program Files\GLIntercept0_5" into "C:\Google Earth".
  5. Make a copy of the "opengl32.dll" located in your "C:\Windows\SysWOW64" folder and rename it to "opengl32.orig.dll".
  6. 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.
  7. Download this zip and extract the "gliConfig.ini" file into "C:\Google Earth".
  8. 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.
  9. 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:

  1. 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.
  2. 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.
  3. 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.

  4. 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!

Credits

A big thanks to Damian Trebilco, the author of GLIntercept, who personally helped me to get this working in 2013.  Seriously, without his help, this would not have been possible.
And secondly, to Daniel Belcher, whose original article inspired me beyond words and got me started along this path to begin with.  Thanks!
 

RTSM to CMS Sync – Step by Step Guide

This activity is one of the most commonly sought-after and often confusing HP Integrations.  Finding the correct documentation is usually the biggest hurdle to overcome.  For example, the documentation provided for this activity that ships with UCMDB/BSM is incomplete and/or blatantly incorrect.  The Software Solutions Now guides are far more comprehensive, however, the best outline can be found ironically in the Release Control Detect to Correct Value Stream interactive guide.
 
What follows are the steps from that guide:

UCMDB – BSM Integration Configuration

Overview
This configuration synchronizes the configuration item (CI) records between HP Universal CMDB (UCMDB) and Run-Time Service Model (RTSM). Apart from the convenience synchronizing the configuration between UCMDB and RTSM provides, we make sure that the CIs across all three systems (UCMDB, HP Service Manager (SM), and HP Business Service Management (BSM)) are identical and have the same GlobalID generated by UCMDB.

Create UCMDB to BSM Integration Point in BSM

Deploy Package CSM_to_RTSM_Sync.zip on BSM
  1. Copy the file CMS_to_RTSM_Sync.zip located on the BSM-DPS machine file system under HPBSM\odb\conf\factory_packages to the file system on the UCMDB machine.
  2. Open the UCMDB user interface.
  3. Select the Administration tab.
  4. Select Package Manager.
  5. Select Deploy Packages to server (from local disk).
  6. Click Add button and selec the file CMS_to_RTSM_Sync.zip through the file system browser.
  7. Select Deploy

Enable the CMDB 9.x Integration Point

  1. Open the BSM admin user interface and select the RTSM Administration.
  2. Select the Data Flow Management tab.
  3. Select Integration Studio.
  4. Create a new Integration Point according to the following table:

     

     

    Name
    Recommended
    Value
    Description
    Integration
    Name
    <user defined> The name you give to the integration point.
    Adapter UCMDB 9.x Select the adapter type from the drop-down list.
    Is Integration
    Activated
    selected Select this check box to create an active integration point.
    Hostname/IP <user defined> The name of the UCMDB server.
    Port <user defined> The port through which you access UCMDB.
    Credentials <user defined>

    If UCMDB credentials appear in the Credentials column, select them.

    If no UCMDB credentials appear, select Generic Protocol and click the Add new connection details for
    selected protocol type button.
     
    Enter the following information:
    • Description. Enter UCMDB.
    • User Name. Enter the UCMDB user name. The default value is admin.
    • User Password. Enter and confirm a password.
    Probe Name <user defined> Select the probe you configured previously from the dropdown list.
     
  5. Click the Add icon on the right side of the window and add Job definitions as follows:

     

     

    • Name the Job definition.
    • Select the Allow Delete check box.
    • Click the Add icon in the Job definition window.
    • From the pop up window, browse to root – CMS sync, select the ActiveDirectory_sync job and click OK.
    • Select the Scheduler definition check box.
    • In the Repeat window, select Cron.
    • For the Cron expression, enter the following string: * 0/10 * * * ? *
    • Adjust other settings as needed.
    • When finished, click OK and save the integration.
    • Repeat steps a to i and configure the following jobs:

       

       

      • FailoverCluster_Sync
      • IIS_Sync
      • SOA_Sync
      • BusinessAndFacilities_Sync
      • ExchangeServer_Sync
      • Virtualization_Sync
      • Siebel_Sync
      • Credentials_Sync
      • Basicinfrastructure_Sync
      • J2EE_Sync
      • SAP_Sync
  6. Browse to UCMDB on port 8080 (for example, http://yourUCMDBhost.domain:8080), and select the JMX Console
  7. Log on to the JMX console.
  8. From the UCMDB section, select UCMDB:service=Multiple CMDB Instances Services.
  9. Invoke:

     

     

    • setAsNonGlobalIdGenerator for customer ID 1 and verify it succeeded.
    • getGlobalIdGeneratorScopes for customer ID 1 and verify it succeeded.
  10. Browse to your BSM administration UI.
  11. Select Data Flow Management tab.
  12. Select Integration Studio from the options.
  13. Select the Integration Point that you have configured.
  14. In the Job definition section, click Synchronize All to run the synchronization.
The integration point should be active and the jobs are displayed properly.

Configure BSM 9.x Integration Point

Deploy Package CMS_to_RTSM_Sync.zip on BSM
  1. Copy the file CMS_to_RTSM_Sync.zip located on the BSM-DPS machine file system under HPBSM\odb\conf\factory_packages to the file system on the BSM machine.
  2. Open the BSM user interface.
  3. Navigate to Admin > RTSM Administration > Administration > Package Manager.
  4. Select Deploy Packages to server (from local disk).
  5. Click the Add button and select the file CMS_to_RTSM_Sync.zip through the file system browser.
  6. Click Deploy.

Enable the CMDB 9.x Integration Point

  1. Open the UCMDB user interface.
  2. Select the Data Flow Management tab.
  3. Select Integration Studio.
  4. Create a new Integration Point according to the following table:

     

     

    Name
    Recommended
    Value
    Description
    Integration
    Name
    <user defined> The name you give to the integration point.
    Adapter BSM Adapter Select the adapter type from the drop-down list.
    Is Integration
    Activated
    selected Select this check box to create an active integration point.
    Hostname/IP <user defined> The name of the BSM server.
    Port <user defined> The port through which you access UCMDB.
    Credentials <user defined>
    If UCMDB credentials appear in the Credentials column, select them.
     
    If no UCMDB credentials appear, select Generic Protocol and click the Add new connection details for selected protocol type button.
     
    Enter the following information:
    • Description. Enter UCMDB.
    • User Name. Enter the UCMDB user name. The default value is admin.
    • User Password. Enter and confirm a password.
    Push Back IDs Enabled
    Specifies whether to push back the global IDs after CIs are populated in the server.
     
    Note: Relevant for UCMDB 9.x adapters.
    Probe Name <user defined> Select the probe you configured previously from the dropdown list.
  5. Click the Add button on the right side of the window and add Job definitions as follows:

     

     

    • Name the Job Definition.
    • Select the Allow Delete check box.
    • Click the Add button in the Job definition window.
    • From the pop up window, browse to root – CMS sync, select the ActiveDirectory_sync job and click OK.
    • Select the Scheduler definition check box.
    • In the Repeat window, select Cron.
    • For the Cron expression, enter the followning string: * 0/10 * * * ? *
    • Adjust other settings as needed.
    • When finished, click OK and save the integration.
    • Repeat steps to a to i and configure the following jobs:

       

       

      • FailoverCluster_Sync
      • IIS_Sync
      • SOA_Sync
      • BusinessAndFacilities_Sync
      • ExchangeServer_Sync
      • Virtualization_Sync
      • Siebel_Sync
      • Credentials_Sync
      • Basicinfrastructure_Sync
      • J2EE_Sync
      • SAP_Sync
  6. Browse to BSM on port 21212 (for example, http://yourDPShost.domain:21212), and select the JMX Console.
  7. Log on to the JMX console.
  8. From the UCMDB section, select UCMDB:service=Multiple CMDB Instances Services.
  9. Invoke:

     

     

    • setAsNonGlobalIdGenerator for customer ID 1 and verify it succeeded.
    • getGlobalIdGeneratorScopes for customer ID 1 and verify it succeeded.
  10. Browse to your UCMDB administration user interface.
  11. Click the Data Flow Management tab.
  12. Select Integration Studio from the options.
  13. Select the integration point that you have configured.
  14. In the Job definition section, click Synchronize All to run the synchronization.

The integration point should be active and the jobs appear properly.

Verify UCMDB – BSM Configuration

  1. Browse to your UCMDB server user interface.
  2. In the CI Type manager screen, locate the Node element.
  3. Right-click a Node object and select Show CIT Instances. The CIT Instances window is displayed.
  4. Right click on one of the CIs and select Properties.
  5. Locate the Global ID and write down its value.
  6. Browse to your BSM server user interface.
  7. Repeat steps 2-4 and identify the value of Global ID.
  8. Compare the IDs from steps 5 and 7 and verify that they are the same.

Afterwards, there are a number of LWSSO/Security settings that will should be configured as well.  Please refer to the guide to complete those steps

Why I Am Quitting Traditional IT Management Consulting

In Intact Technology's debut blog, Jesse White comes out swinging:

Traditional IT Management Consulting uses fear, doubt and powerful relationships to sell business leaders promises of game changing outcomes. They make the simple complex, extremely expensive and then get paid to simplify it again. Too many times getting paid to waste time and money to point the finger at their competitor, the IT department. How is this helping anyone? This is bullshit.

And he's absolutely right.  The elephant in the room cannot be ignored any longer.  In-house IT is not the enemy and Consultancy Firms need to stop whispering this into the Business' ear.  Indeed:

I am not saying that IT departments don’t need specialized help or that every IT department has what they need to support their business.  I am saying we need a fundamental change in the model…

Check out the full article, it's well worth the read.

Beginners Guide to Modeling in Maya for UDK

The following resources will guide the UDK/Maya novice in creating a simple model in Maya (with textures) and successfully importing it into a simple UDK map.

Note:  Upon launching Maya you will see the Essential Skills Movies tutorials.  Watch all of these to understand the basics of the Maya interface.
 

UDK/Maya: How to Set Up Your Grid in Maya to Match UDK

 

UDK: How to Add Player Starts, PathNodes, Weapons, Items, Vehicles and JumpPads

 

Maya Beginner Basics: Snap Tool and Pivots

(Press to "insert" enter pivot-moving mode).
 

Applying Custom Textures to a model in Maya

 

Maya 2012: Create static meshes for UDK

 

Exporting Google Earth Models into UDK using SketchUp

I was looking into the possibility of mocking up a 3D city in UDK and came across the following links on youtube.

Google Earth is an abundant source of low res 3D models for any given city.  
And you can freely download most of these models as .skp files.
 
Once you have a .skp file from Google Earth, you can load it into Google Sketchup Pro (a free trial version is available for up to 8 hours of dev time).
After that you can export that .skp file into a .fbx file that UDK will recognize, including textures.
Although to work with the original textures you will also need a batch texture conversion tool, like IrfanView.
 
Its a bit of a process to work through, but becomes easy enough the more you do it.
Check out these videos for more detail.
 

How to Import SketchUp Assets/Models to UDK

 

How to import Materials/Textures from SketchUp to UDK

 
 
Here is a Google Earth model I converted to the UDK platform. 

 

Unless you are only interested in exporting 1 Google Earth at a time, there are more efficient approaches to exporting larger groups of buildings in one shot.

Exporting Google Earth Models into 3DS Max

Part 1 – Exporting Google Earth Models into UDK

Part 2 – Exporting Google Earth Models into UDK

Return top