Practice English Speaking&Listening with: Google I/O 2010 - The SketchUp 3D API

Difficulty: 0

>>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 ?


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.


And how 'bout a show of hands, how 'bout who's familiar with 3D warehouse?


A little less than Earth, but still respectable. I like it.

Going backwards again, let's talk about the authoring tools.


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


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.


And this is why you need a, need the Plug-in in order to use Building Maker.


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


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,


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



to the roof profile --


very quickly and easily.


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.


That one's a little fuzzy. I don't like that one. Let's try this.




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.


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


on the sides that I constrain 'em in. So there's my textured building which --


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 --


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 --


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.


So I'm gonna pull up a special interactive console --


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 -


can you see, is that visible?


So I have the model in this local variable m and I can check the Entities


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 --


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


in f.


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



I now have 18 Entities which includes all the Edges and all the Faces. So if I iterate

o-through over all of 'em --


and get each Entity. I'm gonna check if that


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.


Oh, whoop.


Did I get it, yeah, got the Edge.


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.


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 --


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.


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



As I'm iterating through those I can check if it's an Edge


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 --


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 --


that. I don't know if it'll help but --


we'll see.


Syntax error. Oh I forgot an end somewhere in there so let's get it back.


Do en, does, is Edge and en position z?


>>voice in audience: [unintelligible]

>>Matt Lowrie: Ah, thank you. Now that guy's awake. Thank you very much.


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


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.


I'm gonna import an actual kmz model.


So this came out of the 3D warehouse.

[pause - sound of typing on computer]

I can just import it.


And this, this is a good example of how to demonstrate this Component and ComponentInstance


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


[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.


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


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



another building.


Oh, actually that's a model so I don't have to import it, I can open it.


I got the Trump World Tower here.


There it is.


So this was also got off the 3D warehouse


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]


[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


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 --


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.


>>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 I'll set the lat long too and use Ruby variable

expansion here to set my lat and lon.


Is that what I used l-o-n, yes.

So I got that.

Let's set hybrid and zoom level end of 19.


So I'll set the URL to that.


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



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 --


There it is.


New. And your client is just as impressed with these as he are, is with Bret Michaels'



So there you have it.


One last demonstration that I wanna give here.


There's lots of scripts actually out on the Web. There's a Website called

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 --


Let me import another building here to demonstrate it.


This script was written by a user that --


actually --


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 --


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 --


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.



>>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

>>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


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

The Description of Google I/O 2010 - The SketchUp 3D API