>>Matt Lowrie: Thanks to coming to this session. My name is Matt Lowrie and I'll be talking
about using Google 3D Geospatial Data, in particular with the SketchUp API.
Like all the other sessions here, you can join the live Wave and post questions. The
link is here. I'll give you a couple seconds to jot it down if you wanna a--follow it live
and ask questions there.
And as, while you're lookin' at this, I'll just give disclosure, I'm not showing any
HTML 5 or Android demos here, so nobody left, so that's good. So you're here definitely
for Geospatial Data.
So before I get into all the fancy demos, let's first answer the question of why 3D?
Well if you've gone outside recently and looked around you'll understand that we live in a
three dimensional world which is good 'cause as humans we inherently grasp the concept
of three dimensional space. And you know that if you've ever seen a dog try to walk through
a plate glass window or a squirrel get a bucket stuck on its head in the woods, you'll know
that as humans we have this special ability to understand three dimensional data. People
getting stuff stuck on their head notwithstanding.
But with that we can use this inherent ability to understand 3D data to describe geolocated
data or geolocated information. And I'm sure you've all used this in-in conversations that
you've had with other people.
For instance, if you're describing where your apartment is you can say, "Well, I'm in the
rounded building on the corner," or if you're giving directions to somebody you can say,
"Well, that office is down the street, you wanna look for the building that looks like
a giant elephant."
A few years ago I was in New Orleans for SIGGRAPH, not this past one, but the previous one, and
a colleague of mine were touring around and we wanted to find Anne Rice's house, who lived
there at the time; she's the author of the, some of the vampire novels in the 80's, you
know the previous vampire craze.
So we asked a local on the street, "How can we find Anne Rice's house?" and his description
to us was, "You wanna go 500, 500 paces as the crow flies and look for the house what
you would think Anne Rice's house looks like." And from that description we could make a
mental 3D image in our heads and we saw what we thought was Anne Rice's house. We're not
sure, but at least we got a good story out of it.
So that's the reason for 3D.
Google understands this and that's why we try to build 3D information into our Geo Products.
And this can come in the form of 3D footprints of buildings on maps, as you'll see in a lot
of cities.
This also pertains to street view which gives you this 2 1/2D vision of the--the surrounding
3D world around you so you can get the same feeling of your three dimensional space in
this 2 1/2D environment. And that's just with a 2D product like Maps.
Google also has a whole suite of products that deal specifically with 3D data. And that's
what this talk will--will be focused on.
These products are in order.
Building Maker which allows you to create 3D geolocated data from scratch.
We also have SketchUp which also allows you to create 3D data from scratch, but also lets
you take data you've created in Building Maker or some other source or data that somebody
else has created and refine that and build upon it and improve it as you see.
We have the 3D warehouse which is our storage repository for all things 3D.
We also have Earth which you're probably familiar with is, which is a great product to actually
visualize geolocated 3D data.
These products are all located at these URLs. I was going to suggest that you could go to
these URLs during my presentation, download 'em, and play along with me, but then with
all the band width issues we've been having, I realized it's maybe not the best idea to
have you download tens of megabytes of client applications while I'm tryin' to give my presentation,
so after this presentation at your hotel or at home, please go download some of the applications
and give 'em a try and that's where they're located.
And with that I wanna mainly go into demos here. And let's hope I don't have a Google
TV moment while I'm doing this.
I'm gonna go through these, these 3D products in reverse order and show you how each of
'em uses 3D Geospatial Data.
And the first one being Earth. You're probably familiar with Earth, but if you didn't know
Earth also has ?
[pause]
a 3D buildings layer built right into it that I think comes, it comes turned on as default
when you install Earth, but if not you can turn it on yourself and that gives you --
I'll zoom into where we're located -- what this gives you is the ability to go into any
location and actually get the immersive feel of the entire 3D space as you--you would see
it if you were there.
So from this you can see what it would take to actually walk to different places and what
different places are located around your area, what the perspective of buildings, the size
of buildings, natural landmarks that you wanna look for.
Just show of hands, how many people knew about 3D buildings in Earth? Very good. Let the
record show that that was most everybody for the YouTu--YouTube audience.
So yeah, you're familiar with that.
One of the questions you may have had when looking at these 3D buildings is: where do
they all come from? And that's the next product: 3D warehouse.
So this is our online rep--repository that stores all the 3D buildings that are located
in Earth. They're contributed by users like you who wanna build this geolocated data.
They, you submit it to 3D warehouse and then it's taken through our pipeline to be considered
to be put into the Google Earth 3D layer.
You can see there's certainly lots of buildings, lots of collections of buildings, but we also
store any other types of 3D data: interiors, furnishings, cars, anything like that. It's
not restricted only to 3D buildings. Any sort of 3D can be warehoused in--in this place.
What's nice about 3D warehouse as well is you actually have a user account to it in
which you can see --
[pause - sound of typing on computer]
it'll give you statistics on --
Did somebody download Earth 'cause I'm, this is takin' a long time.
But it'll give you, it'll keep statistics on all the geolocated buildings that you actually
store within here. So you can see how many you've actually submitted. it'll keep track
of how many are actually in Earth at the moment. So you get a--you can build up nice score
cards of how much you've contributed to the 3D buildings layer that people are, around
the world are using to visualize Earth.
If you don't -- it'll give you feedback saying that you're building has been selected if
it-if it does get in the layer. If it hasn't we also have reasoning in there that tells
you, "Well, it wasn't accepted at this time for a variety of reasons," in which case you
can go back and fix the model, try to correct any of the reasoning that it might not have
been included in Earth.
This one was not accepted because we--we don't know if that building is there or not. That's
a harder one to fix, but some of the other ones are easy if textures are missing or--or
if your building's floating above the Earth, things like that you can fix and then it will
be reevaluated to put--put back into Earth.
From here too, if you're just interested in buildings that are only shown within Google
Earth, you can actually search for those buildings around any location.
[pause -- sound of typing on computer]
So this restricts the search to yes, these are all the buildings that actually show in
Earth now and it's around this location that we're interested in. So if you go into any
of these you actually then have access to the model to view locally on Earth or to import
into SketchUp for whatever 3D presentation you wanna do beyond that.
[pause]
And how 'bout a show of hands, how 'bout who's familiar with 3D warehouse?
[pause]
A little less than Earth, but still respectable. I like it.
Going backwards again, let's talk about the authoring tools.
[pause]
the first one being Building Maker.
So this tool is, is relatively new. It came out recently. But this allows you to create
a lot of the building and 3D geolocated data that you saw in the 3D warehouse all from
scratch. You can do it right--right in a Web browser. You only need the Google Earth Plug-in
in order to--to use it. We check for that first. And you'll see why you need that in
a minute.
But what's nice about Building Maker is it is a Google property, but it's also a great
example of using other geo APIs to build a geospatial product in itself.
One of the, a couple of the APIs we use I'll demonstrate here, the first one being the
Maps API.
Building Maker starts off by giving you a series of locations in which we have available
to model right now and we use that by the familiar map pins on the--on the map of the
world. And this lets you pick any of these locations that are available in the model
right now. I will pick my preselected location for this demo to show you an example of this.
From here we show you, we put the little blue measles all over the map showing you places
that people have models already pending to be in--in Google Earth right now. These are
in the pipeline. So you know that all these ones showing up here somebody's has already
modeled. So from that you can pick a new location to start, start building where nobody has
touched yet.
So those markers were pending models; there's also models that are already in the 3D layer
in Earth and those you can see -- whoop
[pause]
you can see those by going to the Earth view in which we highlight all the 3D buildings
that are already in there. So this is a good example of using the Earth API.
[pause]
And this is why you need a, need the Plug-in in order to use Building Maker.
[pause]
So with this I can see what people have already modeled and I know I'm not around pending
models, so I can find a brand new location that nobody has modeled yet, and from this
I get a series of images at that location that are-- that are slowing loading.
But if I pick this location, you're given a bunch of oblique aerial imagery which you
can then model on top of to create your 3D building.
So if I zoom into this one, I choose this location, this building, we give you a series
of primitives, blocks, very common for post-modern buildings; different roof types, hip roof,
gable roof, pyramids, flattened pyramids type roofs. Also free-form primitives so that allows
you to go into more high end architecture where they're doing all sorts of fancy shapes.
The free form shapes allow you to model all those as well, which we have a lot of examples
of.
This one's pretty blocky luckily so I'm able to easily right within the browser just take
a block, superimpose it over the boundaries of the building,
[pause]
I can then constrain where I wanna put the next block on top of that one and I'm gonna
add a flattened pyramid roof on top of there and then I can constrain--constrain that
-
[pause]
to the roof profile --
[pause]
very quickly and easily.
[pause]
And that gives me one, one perspective of it. I can then go to through all these additional
images, images that give me each side of the building.
[pause]
That one's a little fuzzy. I don't like that one. Let's try this.
[pause]
Loading.
[pause]
Connectivity. Slow.
But, if it had loaded here I could then in each of these views they give you a different
side of the building which you use then to-to model it. Here it comes.
So I put that in place.
[pause]
As refined as I can and then from here I can preview it directly in the location in Earth
and what Building Maker will do is take those oblique aerial images and use that as the
texture for your building
[pause]
on the sides that I constrain 'em in. So there's my textured building which --
[applause]
Oh. Thank you very much.
So you--you'll get, you can be as detailed as you want with this. With the, all the primitives
that are provided you can go in, model some of the, the roofing elements here, awnings
things like that and the texturing service will then texture over all that geometry and
warn you when you need to fix things like if you've missed some sides it'll warn you,
"Hey, go to those sides and texture those as well."
But in the interest of time and in getting to lunch on time, I'll just save this one
and when you save it, it's automatically put into the 3D warehouse for you. It's put into
the queue to be considered in the Google Earth 3D Layer and you're on your way. You wait.
We try to get the process down to a week in or, not--notifying you, but after that we'll
let you know if it's accepted or not and you can feel so empowered that you go and model
entire cities. That's the hope.
So there it is in 3D warehouse with mapping, street view, different information about what
you've just modeled. So that's Building Maker.
The other authoring tool that we have and the one that relates to this conference --
let me put it out of Earth to save the GPU --
[pause]
and go into SketchUp.
We have SketchUp which is another authoring tool; let's you create, easily create 3D geometry
from scratch; allows you to import 3D data like the building you just created in Building
Maker; and what it also provides which relates to Google I/O is an actual API to get at all
of that 3D data and the Geospatial Data as well, which I'll be going through and blasting
a whole bunch of code on screen. So if you're in the back you may, you may need to squint.
So here is, here is SketchUp and there's several ways to access the API. The SketchUp API is
actually in the Ruby programming language. We've compiled in an actual Ruby interpreter
within SketchUp so you can access that either through a interactive terminal in which you
can in real time access the entire 3D scene from the API.
You can save your code out to an actual Ruby Script in which SketchUp can re, load that
whenever you, whenever you define it, as I'll show it gives you access to the--the GUI so
you can have build your Plug-in into the GUI and have a user invoke it whenever they feel
like it.
Another way you can invoke it which I'll demo is that from the command line of launching
SketchUp you can tell it to load a Ruby Script and it can load that at run time and-and actually
batch process jobs. So I'll demo all those.
Let me go back to the slides real quick --
[pause]
and first show where SketchUp API exists in the Maps, or the Geo API landscape. As you
can see it's down here in the bottom corner in nice ruby red. It's not built on any of
the Google Maps infrastructure, but as I'll demonstrate it works very cleanly with any
of these other APIs.
As an introduction to the API as well, I'm gonna go over some of the terms that the SketchUp
API uses that might be different from what you're used to either working with 3D or other--other,
or with Ruby specifically.
If you're used to 3D you know you have a 3D environment or a 3D scene. That's referred
to as the model in SketchUp.
Within that model or 3D scene you have all your 3D geometry. We defer, we refer to those
as Entities.
We have vertices which are Points in space; three dimensional space. We call those vertices
or Points.
We have Edges which are the line segments that connect vertices to create actual defined
areas in 3D space.
We have Faces which you're probably familiar with. Faces are just polygons that are defined
by these Edges or line segments.
We also have the concept of a Loop which is the series of line segments that go around
a Face.
So I'll demo all of those directly in SketchUp so you can see what it's all about.
[pause]
So I'm gonna pull up a special interactive console --
[pause]
that will give me acc--direct access to the, to the Ruby interpreter and the actual SketchUp
scene that I have right here. Right here it's empty right now, but we'll-we'll fix that.
So I mentioned model, and that we have a SketchUp top level module. If you're familiar with
Ruby at all it deals with modules which are basically name spaces.
So we have the SketchUp name space or module and from that I can get the active model which
is the entire 3D scene. I'll pump up -
[pause]
can you see, is that visible?
[pause]
So I have the model in this local variable m and I can check the Entities
[pause]
which are in here right now. Right now I have nothing 'cause it's an empty scene, but on
that Entities collection we have helper methods. Ent-ti-ties; very verbose.
I can add a Face and by, if I wanna add a vase--Fa--four pointed Face I can just give
it a--an array of three dimensional coordinates so I'll start at the origin, I'll go out a
hundred units --
[pause]
make another one at a hundred hundred, but I'll stay zero in the z axis and back around.
[pause - sound of typing on computer]
And this will return the Face that I'm creating so I'll store that as well
[pause]
in f.
[pause]
So add a Face; Ruby takes the command and puts it in my 3D scene.
SketchUp, what's nice about SketchUp too and what makes it easy to--to create 3D within
it, is we give very conceptual 3D tools so we have things like Eraser to delete geometry.
We have squares and circles which are easy to understand. We also have this tool that's
called a push/pull tool which allows you to quickly and easily extrude 3D geometry from,
from any 2D primitive. And that same terminology exists in the Ruby API as well.
So on my Face I can actually push/pull it the direction of the normal of that Face is
pointing down as I created. So if I wanna push/pull it up a hundred units I'm actually
gonna go negative here and that'll give me a cube.
And just to be interesting what I can do now is iterate using the Ruby syntax over all
the Entities in the scene. Ruby allows you to call each if you in a collection and give
it a code block in which you can operate on any of those elements.
So I'm gonna iterate over everything in my Entities scene now which if I do a count
--
[pause]
I now have 18 Entities which includes all the Edges and all the Faces. So if I iterate
o-through over all of 'em --
[pause]
and get each Entity. I'm gonna check if that
[pause]
is a SketchUp Face --
[pause - sound of typing on computer]
I'm going to set the material
[pause - sound of typing on computer]
to a new color and I'll just take random values for that.
[pause - sound of typing on computer]
And then, so if I do that then I can just aerate over everything that's in a Face in
that, in this scene and give it a random color. The random colors weren't that interesting,
but oftentimes it is.
[sound of pages turning]
So other things you can access here which are nice: Face has its collection of Edges.
Oop. That is length.
So four Edges around that Face.
If I look at each of those, or if I look in an actual Edge object --
[pause - sound of typing on computer]
I'll get the first one, the Edge object has its 3D data like a position.
[pause]
Oh, whoop.
[pause]
Did I get it, yeah, got the Edge.
[pause]
Position, oh, it didn't do it.
But it has positional information contained within that position. Oh, I know what I need
to do.
Actually so an Edge has two vertices. You wanna get the position of those vertices.
What's nice about Ruby is that we can, Ruby is a language that tries to give you some
human readable context which is the reason why we used it as a scripting language 'cause
it makes your, tries to make your scripts human readable.
So for a lot of these terms for 3D, all the 3D geometry in here, we can actually use human
readable terms. So an Edge which is a line segment has two vertices, one on either end.
We can actually store those in very, methods called start and end.
[pause]
And those are what you'd think of if you're thinking of a line segment and actually if
I look at the position of that, oop --
[pause]
I have to spell it right. There is it. Okay.
So the start position is at the origin. I can look at the end position on this line
segment and that's the one that goes from zero zero to one hundred zero zero.
So with this then you can easily look at this Face. I wanna get the length in x so for the
Face I'm gonna look at the Edges, get the first one, first Edge, I'm gonna get the length
of it; that's a hundred units as you, as you would imagine. I've made this asymmetrical,
asymmetrical it would have given me different, but if I get the next Edge in order --
[pause - sound of typing on computer]
get its length, which is also a hundred, I now have the length of one side of the Face
and the length of the other side. So from that I can just multiply and get the area
of that Face.
So this is an easy way if you're given any sort of 3D geometry you can inspect it, actually
calculate things that might be interesting for geolocated data like areas and volumes
and things like that.
But as I mentioned, Ruby allows you to define all that in human readable terms. So Face
already has area method on it which gives you that same information.
[pause]
What it doesn't have though is volume, which is easy to get as well. What we need there
is just to get the length of any of these Edges that go up in the z direction and from
those the way to find those is if we iterate over all the Edges and find out the ones whose
start vertice at z position does not equal the z position of the ending vertice then
we know we have one of these line segments.
So from that I can get the Face. There's an all connected meth--collection which gives
me all the Entities that are connected to that Face so I can iterate through each of
those.
[pause]
As I'm iterating through those I can check if it's an Edge
[pause]
is this a SketchUp Edge? Oh, before I do that what I wanna do is define lz so I can store
it in there. So on my Face I iterate through all connected each --
[pause]
I'm going to look for is this a SketchUp Edge?
[pause - sound of typing on computer]
And if so, does this, does the start, oh, automatic screen saver.
[pause - sound of typing on computer on computer]
I look at the start position z if it does not equal the end position in z then I know
that's what I got so I'm gonna store the length in there.
[pause - sound of typing on computer]
And just to make sure this works you might wanna turn off your Bluetooth or --
[laughter]
that. I don't know if it'll help but --
[laughter]
we'll see.
[pause]
Syntax error. Oh I forgot an end somewhere in there so let's get it back.
[pause]
Do en, does, is Edge and en position z?
[pause]
>>voice in audience: [unintelligible]
>>Matt Lowrie: Ah, thank you. Now that guy's awake. Thank you very much.
[pause]
There we go. Aerating through all of 'em, I get the length of that. Now I have the length
in x, y, z, I get my volume.
So there we go, there's examples in real time of how to work with 3D data within the API.
So that's basic 3D geometry.
Let's go over some terms that are specific to SketchUp and not just 3D in general. And
this will show us how we can get ads, actual Geospatial Data.
SketchUp has this idea of a Component which is basically like a object class instance
relationship. So you can have this ideal definition of a Component and then within your 3D scene
you can instance it all around. It will always refer to that--that ideal definition of the
Component.
We also have an AttributeDictionary which allows you to store custom data into your
model. That way when it gets saved out and passed around and given to somebody else,
you can look in those AttributeDictionaries which are just key value pairs that store
whatever custom information you wanna keep with that model.
We also have a WebDialog which as you, as the name suggests, is just within SketchUp,
gives you a Web browser.
So I will demonstrate each of those.
[pause - sound of typing on computer]
We'll start with one you've seen here.
[pause]
I'm gonna import an actual kmz model.
[pause]
So this came out of the 3D warehouse.
[pause - sound of typing on computer]
I can just import it.
[pause]
And this, this is a good example of how to demonstrate this Component and ComponentInstance
relationship.
So since I started a new scene I'll get that active model again.
[pause - sound of typing on computer]
The active model has its DefinitionList in defi-ni-tions. So if I look at the count of
that there's one ideal Definition in that DefinitionList. And if I look at what that
is
[pause sound of typing on computer]
the one object in there, it's my ComponentDefinition. If I look at Entities right now there's one
Entity in there.
[pause]
And if I look at what that is, that's my ComponentInstance. And what this relationship gives you is if
I take this and duplicate it, any edits that go on
[pause]
to this now --
[pause sound of typing on computer]
Let go!
[pause sound of typing on computer]
Any edits that I do to the one will take place in all the others. So that's what Components
are all about. And you'll see that if you bring in kmz files they'll be set up as a
Component to start with which is why, which why I'm explaining it here.
So let's look at AttributeDictionaries as well. Let's start another new line. I'm gonna
import
[pause]
another building.
[pause]
Oh, actually that's a model so I don't have to import it, I can open it.
[pause]
I got the Trump World Tower here.
[pause]
There it is.
[pause]
So this was also got off the 3D warehouse
[pause]
and somebody built it in a geolocated position and I--I have a sample of a environmental
skirt here which shows the location that they actually pulled it from.
So this is where it all ties together as far as using the Ruby AP--API with geolocated
data in this, in the AttributeDictionaries that I mentioned.
Let's get the model again.
[pause sound of typing on computer]
Whoops.
[pause sound of typing on computer]
It ha, the active model --
[pause sound of typing on computer]
has this very, very, very long term associated for getting AttributeDictionaries. And these,
as I mentioned, are key value pairs so I'm gonna, since it's so long, I'm just gonna
store it this member variable.
Let's look at what each of these keys are. If I get each item in this AttributeDictionary
[pause]
I'm going to put the name of each one that's in here.
So this comes with a couple dictionaries of, of custom information that was included with
it when I pulled it down from the 3D warehouse. The most important here being GeoReference.
So in the AttributeDictionary's collection any of the one's that are GeoReferenced in
the 3D warehouse is gonna have this GeoReference AttributeDictionary.
So if I get that --
[pause sound of typing on computer]
Geo-Re-fer-ence. I won't go over everything in it, but it has what you would probably
want from GeoReference information. We've got the latitude of where this is located
and longitude.
[pause sound of typing on computer]
So I can store each of those --
[pause]
let's get the latitude --
[pause sound of typing on computer]
longitude --
[pause sound of typing on computer]
Now I have those stored, what I can do is that that WebDialog object that I mentioned.
I'll create one of those. That's in the UI name space or module.
[pause sound of typing on computer]
Create a new one of those.
[pause]
>>voice in audience: [unintelligible]
>>Matt Lowrie: Ah, the Wed. There we go. That's better.
Now that I have one, you're an excellent wing man, if I hadn't mentioned it.
I get the WebDialog, set a size that's big enough to see for this screen, so thousand
by eight hundred.
[pause sound of typing on computer]
Let's just show it, show that it's there. That's looks big enough. So now I can set
the URL on it.
[pause sound of typing on computer]
And I will use maps.google.com./maps. I'll set the lat long too and use Ruby variable
expansion here to set my lat and lon.
[pause]
Is that what I used l-o-n, yes.
So I got that.
Let's set hybrid and zoom level end of 19.
[pause]
So I'll set the URL to that.
[pause]
There's my WebDialog within SketchUp. So it's that lat lon of that, of the Trump Tower and
there it is, right there, Trump World Tower. So I can actually, once I have a model, I
have different tools for visualizing where it is.
So here's my WebDialog. It's easy to put Maps into there. We're dealing with 3D though.
What would be even nicer as you would extrapolate is that we can put in the Earth API browser
or Web browser Plugin. And that's what we've done with this plug-in.
So I've taken the Ruby Script in order to do the same thing I just did here, pull up
a WebDialog embed the Web, or the Earth browser Plugin, take the lat lon of this model, show
it, and also decorate it with other HTML.
But what I did was save this in a Ruby Script that when SketchUp loads I did, I get access
to the SketchUp UI and I can actually put it in this menu item. So now the user can
invoke this script at any time they want by just going to the Plugins menu and invoking
it.
[pause]
So from that it'll actually invoke my script which creates a WebDialog window, builds it
with just basic HTML, takes the lat lon of this model, puts into an Earth Plugin, decorate
it with whatever your client needs are, and that way what's nice about this is you have
3D visualization right here for whoever you're showing it to. But say you're showing this
to somebody and they come in real time they say, "No, no. I want it to be huge." Well
then you can take it right there, build it out, preview it again --
[pause]
There it is.
[laughter]
New. And your client is just as impressed with these as he are, is with Bret Michaels'
bandanas.
[pause]
So there you have it.
[pause]
One last demonstration that I wanna give here.
[pause]
There's lots of scripts actually out on the Web. There's a Website called Smustard.com
which is a warehouse for different Ruby Scripts that people have given for free. The name
of that comes from SketchUp is S-ketchup so this is S-mustard, Smustard.
They store a lot of scripts out there that you can browse and use. One of them is a neat
one --
[pause]
Let me import another building here to demonstrate it.
[pause]
This script was written by a user that --
[pause]
actually --
[pause]
Let me explode the Component here to demonstrate it.
This Plugin can actually take geometry and unfold it. So whatever three dimensional object
you have in there it will give you an unfolded template for it. Well, this exists in a Ruby
Script --
[pause]
that I can then use to batch process SketchUp by using -- if I call SketchUp with this dash
RubyStartup command line flag and point it to the Ruby Script that does this, I can actually
--
yes I know I-I quit. Thank you, Apple.
I can actually do batch process any unfolding of buildings that I wanna do. If we take a
look at the script real quick - because this is Ruby and because is a Plugin architecture
that people accept to actually install into SketchUp, I actually through Ruby have access
to the file system.
So I can look at a directory of kmz buildings, iterate through each of those, get my active
model, import each of these buildings that I'm iterating through off the file system
into SketchUp, look at it, call my unfold script on it, I can change the camera view
to look straight down from a top view, I can zoom extend so that I'm, got the ent--entire
thing in view, and then I can save all of that out to PDF or PNG file or whatever I
wanna do --
[pause]
Let's on my file system here I've got my buildings, I've got this printouts, let's delete it so
somehow that there's no magic --
[pause sound of typing on computer]
And if I just invoke this script with Ruby or with SketchUp -- let me switch to SketchUp
so you can see what's goin' on.
This will actually use SketchUp to batch process 3D geometry by just executing the Ruby Script
that I give it. So there's all my buildings; went through, unfolded 'em all, checked the
file system. There's all my printouts, there I can batch process, send 'em to the printer,
and all those to the intern to cut out and build into actual 3D paper models and everyone
goes out for beers 'cause it's done so quickly.
So that is an introduction to all things Geospatial 3D.
Thanks for coming and thanks for delaying your lunch to see all this. I appreciate it
and we'll take any questions you have.
[applause]
Yes.
>>male in audience#1: I was gonna ask in Builder Maker you have multiple views, multiple angle
views, obviously it was a subset of Amsterdam. Kind of two related questions. One of 'em
is: what kinda defines, where do you get the multiple angle views, and as a follow up is
there any complication of using that technology with Google Earth Enterprise server so long
as we can connect up to cage.google.com?
>>Matt Lowrie: Yep. So the question is the--the oblique imagery from each side in Building
Maker and if using that with, if you use that to texture if you then can take that building
into Earth Enterprise?
>>male in audience#1: Yeah.
>>Matt Lowrie: Yeah, I-I --
>>male in audience#1: Why, actually the first question is where, what defines, you don't
usually have multiple oblique views. I noticed in Amsterdam there was a subset is, how do
we know which areas, or what causes you to have multiple views of--of the same area?
>>Matt Lowrie: Yes. So what causes you to have that, well all those, how does, how do
we give you all those multiple views --
>>male in audience#1: Right.
>>Matt Lowrie: when you're building at that location?
>>male in audience#1: Um-hum.
>>Matt Lowrie: And the answer is that's a secret. [laughs]
>>male in audience#1: Really?
>>Matt Lowrie: But no. A better answer to that is that's just part of the product of
Building Maker so we, actually Google owns that oblique imagery
>>male in audience#1: Hum.
>>Matt Lowrie: and that's certainly all--all geolocated as well. So when you use the Maps
or Earth API to pick a location that you wanna model, we actually can derive that in, that
information where you are and then figure out what obliques you need --
>>male in audience#1: Um-hum.
>>Matt Lowrie: for that particular area. And that's what Building Maker provides.
>>Matt Lowrie: We just
>>male in audience#1: Um-hum.
>>Matt Lowrie: put that into the application to give you all that and then that's used
to-to texture map on --
>>male in audience#1: Is there is any-anyway to replicate that capability in our own Google
Earth Enterprise server that's --
>>Matt Lowrie: There isn't.
>>male in audience#1: Okay. Thanks.
>>Matt Lowrie: But, but as far as --
>>male in audience#1: I was hoping you we're gonna say "yet."
>>Matt Lowrie: [laughs] I can't say yes
>>male in audience#1: No, yet.
>>Matt Lowrie: at this time, but if that, the answer to if it works with Enterprise
is yes 'cause we then take that as, and use that as a texture map on the buildings. So
once it's on the building it's actually removed from that oblique imagery and then it's just
a textured model at that point. So if you use it with regular Earth or Enterprise Earth,
it'll all work the same.
>>female in audience#1: Hi.
>>Matt Lowrie: Hi.
>>female in audience#1: Since we're not in the Android room, I'll ask an Android question.
Is Earth supported on Android, the API? And can you do this like for example could I have
a 3D map of a building and let's say I wanna go to that building then maybe I would press
on the upper floor I could get like a little layout that would show me the inside of the
building; things like that.
>>Matt Lowrie: That would be super awesome.
>>female in audience: [laughs]
>>Matt Lowrie: Which you might consider building. Yeah, at this time there is, and I don't wanna
say the wrong thing, I believe Earth for Android or, yeah, I'm not, I'm actually not sure what's
available. But all of that --
>>female in audience: I know they got Maps.
>>Matt Lowrie: But all of this I know is--is not available on Android yet.
>>female in audience#1: Okay.
>>Matt Lowrie: And, yeah, I don't know when --
>>female in audience#1: I mean we've done 3D rendering like in a game and then you're
doing all kinds of matrices and, this seems so much easier that you could just pull up
stuff and --
>>Matt Lowrie: Yeah. Yeah, it certainly, it's certainly the way -- there is I know a lot
of 3D in general there's a lot of momentum building up in different areas of it. So some
of it is figuring out which technologies are right to go to these platforms with. There's
WebGL. That's emerging.
>>female in audience#1: Right.
>>Matt Lowrie: And-and --
>>female in audience#1: OpenGL
>>Matt Lowrie: with the Java built in for Android there's options there.
>>female in audience#1: Oh, okay.
>>Matt Lowrie: So as far as getting it to these different platforms some of that is
just making, finding out what's the best way to do it. The desktop is at that point to
where we can do stuff like this because the graphics have just --
>>female in audience#1: It-it's harder.
>>Matt Lowrie: over the years have-have --
>>female in audience#1: Yeah. Okay.
>>Matt Lowrie: matured enough. Hopefully, I answered your question, by saying nothing.
>>male in audience#2: What determines which locations Building Maker is supported in and
is that increasing at a certain rate?
>>Matt Lowrie: It is. It's basically, yeah, we--we--we collect that data so, and--and
we don't, we wanna make sure it's--it's accurate data, it's good, it's good quality data to
use so that determines what's--what's actually available at what particular time.
It's currently available right now for 89 cities around the world. Since we've launched
it's just a progressive stream. We launched with Wave fewer cities and then whenever we
get data in the pipeline that's--that's quality enough to present, that's when they'll, it'll
show up in Building Maker.
>>male in audience#3: Hi. I-I was just wondering, this seems like it only works in Earth right
now. Is there any push towards making it work with all of the Maps APIs as-as far as the
perspective 3D models go?
>>Matt Lowrie: As far as the--the Building Maker?
>>male in audience#3: Right.
>>Matt Lowrie: That is, I mean the--the resulting buildings certainly work with Earth or with
any, I mean they're available from 3D warehouse to work with anything. As far the interface
for creating 'em that's only available within Building Maker and it's --
>>male in audience#3: I guess I-I-I mean taking these 3D buildings and putting them in the
Maps APIs so that you could see them, kind of make them available to more people.
>>Matt Lowrie: They should, yeah, it should be the, we just launched Earth View in Maps
>>male in audience#3: Um-hum.
>>Matt Lowrie: and through that is the same collection of buildings that you see in Earth.
So if you go to Maps now and turn on the--the Earth View you'll get the same buildings available
in Maps. That, in order to access 'em I would imagine you have to go through the Earth API
in order to present whatever view within Maps.
But it-it's the same I'm not sure about Android if it's the same, but yeah if you go to a
desktop, go in a browser to Maps, you'll turn on Earth and see the same view.
>>male in audience#3: Thank you.
>>male in audience#4: Does the Google, this Building Maker, does it have an API?
>>Matt Lowrie: It does not have an API --
>>male in audience#4: Okay.
>>Matt Lowrie: as of yet.
>>male in audience: Uh-huh. Does it allow you to save a building as a kmz?
>>Matt Lowrie: Yes. So that's what automatically happens --
>>male in audience#4: Okay.
>>Matt Lowrie: when you save a building in Building Maker it's directly put into the
3D warehouse --
>>male in audience#4: I don't wanna put it in the 3D warehouse that's --
>>Matt Lowrie: Uh-huh. Yeah, that's --
>>male in audience#4: I wanna save it as a kmz to my c drive or whatever.
>>Matt Lowrie: Yeah. The, there's no way to go directly from Building Maker to say just
download it. The--the process that actually converts it to kmz runs on 3D warehouse. This
is why it's actually put in there, that is what converts it to kmz, and once you can
download it from 3D warehouse in which case if you don't want it in 3D warehouse at that
point you can just delete it from 3D warehouse.
>>male in audience#4: Hum. Okay. The, the-the oblique images are, they are only available
within Building Maker? I can't go view 3D images from Google Maps, Google Earth or any
other Google product?
>>Matt Lowrie: Correct. Yeah, they're only --
>>male in audience#4: Why would that be? I mean I can go to Microsoft Live Earth or whatever
and get obliques there?
>>Matt Lowrie: Um-hum.
>>male in audience#4: I work-work for a local government, we spend 50,000, 100,000 bucks
a year buying oblique images. Why wouldn't you make these obliques available in the standard
viewers?
>>Matt Lowrie: That is a, the answer to that is many faceted
>>male in audience#4: Right, right.
>>Matt Lowrie: many of which I don't have the facets to answer, but it is, yeah. Currently
it's just available on Building Maker and that's because we have this particular use
case for it.
>>male in audience#4: Is there any means to add interior information about buildings,
like floor plans?
>>Matt Lowrie: Yeah, that's, I mean that's certainly a big on a, on a wish list of--of
many people. So it's certainly on our roadmap, but currently yeah this first implementation
is--is obviously just exteriors. But some we're always researching.
>>male in audience#4: Thank you.
>>Matt Lowrie: Sure. Thank you.
Thanks. It looks like there's no moderator questions either. And I think we need to wrap
it up to get back on schedule so if you have any more questions I'll be at the back of
the room.
>>male voice: Thanks.