What's new in Cesium: the open-source alternative for 3D maps
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Cozzi, Patrick
When building 3D mapping apps, we no longer have to deal with closed feature-sets, limited programming models, temporal data challenges and bulky deployments. This talk introduces Cesium, a WebGL-based JavaScript library designed for easy development of lightweight web mapping apps. With live demos, we will show Cesium's major geospatial features including high-resolution global-scale terrain, map layers and vector data; support for open standards such as WMS, TMS and GeoJSON; smooth 3D camera control; and the use of time as a first-class citizen. We will show how Cesium easily deploys to a web browser without a plugin and on Android mobile devices.Since last year's talk at FOSS4G NA, Cesium has added 3D models using the open-standard glTF, a large geometry library and higher-resolution terrain.
 So, I was curious, how many people have heard of Cesium before this talk? Wow, awesome. How many people are using it or evaluating it right now considering using it? Okay, cool. Hopefully we'll see more hands at the end of this. So, my name is Patrick Hozi. I'm a developer from a company called Analytical Graphics. And for this talk, you know, I want to talk about Cesium, maybe like a pretty quick intro, but more about what's new since Fals4GNA 2013. So, Cesium is an open source JavaScript library for doing 3D globes in the web browser. It's built on WebGL, so it's very fast. A lot of developers have a long history of doing 3D graphics in OpenGL, so we've done a lot of optimized graphics algorithms. It's being used in a lot of different fields. It's fields that we didn't even anticipate it being used. Certainly, AGI's roots are in aerospace, so we have a lot of people using in aerospace field, but also geospatial is widely used, as well as some other ones that maybe we didn't expect, sporting, entertainment, even some real estate folks have popped up, people doing air traffic visualization, which is a great list of different problem domains. So, in terms of what's new, you know, I want to talk about what's new in the API, what are the new features. But the other thing that's new that's cool is there's a lot of applications that have came out built on Cesium, so I wanted to show some of those. I'm going to try to do all these live demos. I know the internet's been going internet out. I do have some videos as backup if we need. If everyone wants to start streaming video right now, that would be really, really useful for these demos. So, the first one is probably maybe the most well-known one, which is CEN. When people hear CEN, Cesium, they go, well, tell me about CEN. And we heard that a NORAD track CEN uses Cesium. So, I'll bring up this. This is the only, this one is a video because it is, it only runs on Christmas Eve. All right. So, NORAD has this big, big elaborate system for tracking Santa Claus on Christmas Eve. They have Sonar, they have satellites and geosynchronous orbit, they have fighter jets, they have Santa cans, and they use all of this technology to see where Santa is and to give us Santa's position so that on a web map we can show where Santa is with an animated 3D model here. So, this app is built on top of Cesium, AGI built this. We've done it a few years in a row now, but new this past year was the 3D model we see here, the animated model. And this is using a format called GLTF, the GL transmission format, which is something I work on with Kronos, which is, which will be an open standard for streaming 3D models to the web browsers. So, think of a format like Kalada, that's XML based, that's for interchange between 3D formats, 3D tools, I'll replay that, whereas GLTF is for getting it to the web for runtime visualization. In terms of WebGL acceptance rates on people who ask, well, where does Cesium run, how many machines can it run on? So, this went to 20 million users in December and we had about a 50% WebGL success rate. So, we reached 10 million users. And these are all sorts of users, this isn't just tech community, right? This is everyone, the general population. So, I think 50% is pretty good and 50% in rising too. So, we'll see what the stats are this December. Okay. So, next up is something, AGI is building on top of Cesium and this is for space situational awareness. Let's see if the link works. So, AGI does a lot of work in space and we're tracking satellites and we want to know where satellites are, where they will be and hopefully not if they're going to hit each other, potentially come near each other. So, this here is called the space book. Let me try to resize it a little bit. Oh, it's very big. Okay. And I'll zoom out and these are all active, unclassified satellites and this is a real data coming from AGI servers. I'll speed it up a little bit. And we can see them moving. We can zoom in and take different angles on them. And then I'll zoom all the way back out. And we can do things like we can take the stats and say, well, show me only operational ones. I know. There's a lot of debris out there too. It's wild. And then this is still our full 3D globe but it also does 2D and that's the same API. It just does, it just switches it to 2D and you can spin around and all that kind of stuff. We can take it to 2 and a half D. We call this Columbus view. This is particularly exciting when you have satellites because you see the Geo belt very clearly out here and I'm not a space guy but I'll pretend a little bit to be a space guy. So, and let's switch it back to 3D. And then this is just some image, this is natural Earth imagery that we tiled up using TMS and I'll switch it to Bing imagery. Oh, coming in pretty fast. And I'm going to turn on some terrain data. I know some folks are going to Mount St. Helens for the fuel trip tomorrow. So let's go do a preview. And here, another thing that's new with Cesium is the streaming terrain. We've now published the format. Last year we were streaming height map data. Here we were streaming mesh data, it's quantized mesh data that's really tuned for rendering. So it's very concise. We get in a web worker and we very quickly create the final mesh that we're going to stream in. And this is global terrain. So another place I really like to go is Seneca Rocks. And this is the place I used to rock climb when I was younger and this was also a training ground for World War II. I'll zoom straight down and this is amazing. So this fin, ooh, train is not coming up here yet. Well, this fin actually peaks like straight up. It looks, there we go. How many people are streaming video right now? So here, this peak is really amazing to climb. People climb to the top of it. It's like 600 feet tall and you can look out all around it. And I'll come back out home. So that's our SSA app. Okay. So let's see. Okay. So this D3 demo is something that we did last year too. This was actually a hackathon project. And we started this in one day, two of our developers, because we were like, well, hey, we really like D3. I wonder what type of apps we could do with CZM and D3 together. And the internet's looking like it's slowing down on us. Okay. So here we have the classic health and wealth of nations. That's data that you see with a lot of D3 visualizations. And you see the D3 visualization where on the X axis, you see the income. And on the Y axis, you see the life expectancy. And then over time, you're seeing how these vary. But what we're also seeing here is the Columbus View version of it in CZM. And these two are linked too. So I could click on one, I could mouse over one of these and it gets highlighted, or I could mouse over in D3 and it gets highlighted out here in CZM. And then you could also switch this to 3D. So it's still the same API. Cool. So I want to show two more apps. And then I'll go into some of the features. So NICTA is a company that's been doing a lot of work with CZM. They've been doing some very cool apps on top of it. And they've also been contributing a lot to the code base. So one app that they're building is the National Map. This is the Australia National Map. So Australia has fantastic open data within their government. And this map here is built between NICTA working with the Department of Communications and Geosciences Australia. So here they have a lot of different raster data. I'll turn some of them. And then a wider way of vector data. So I'll come down, I've been playing with the population estimates. I'll turn that on and that's an overlaid image layer. Then I could click on one of these features and get some metadata about it coming up here on the right. And then maybe I'll go over the broadband set and turn that on. Then we're getting full 3D. And I could go for info for some of this and I could maybe change the translucency. Let's make that really translucent. And this is in beta right now, but you can check it out. Everything that I'm showing here, this is all online. So you could go run these yourself. And the final demo I will show is also from NICTA, which I think is very exciting stuff here. So this is an app called Duorama that they built on top of Cesium. And it really features a Cesium streaming train and imagery in a sporting application. Over here I'll speed it up a little bit. See what these guys are going. Then I'll slow it down. So here we see gliders. We have several gliders going. They all had GPS on when they did their trip. So they have position, time, information. And then we're playing it back inside Cesium. And this has the streaming terrain data, which has probably 30 meter in this part, as well as the streaming imagery, which is Bing imagery here. And then there's some post-processing going on to get this kind of old school film effect. Then I could switch between the individual people paragliding. And look at each of them. And then each one, you get this height profile, this terrain profile. And it's really interesting to see what they change altitude. They fly out to change altitude. Then you'll watch them fly and go along the ridge, the ridge lines, the mountains. Very cool stuff. And what's awesome is, I mean, this is JavaScript and WebGL all on your browser. So this is dooramba.com. You have some GPS tracks for things you've done. You know, go upload it to here. It's pretty nice. Cool. Okay, I'm glad the internet held up pretty well. All right. So a lot of people ask me, they go, well, why did AGI make Cesium? You know, and it's a very fair question. A lot of times in a technical talk, I don't even address it at all. But it's such a common question. There's two reasons we made it. One was we had customers that needed cross-platform visualization. And we had a bunch of C++ and OpenGL code. And we thought about porting it. But at the time, WebGL was coming out. And we said, well, hey, if we can get on WebGL, we can run with no install. Don't need admin rights. Don't need a plug-in. We could go cross-platform, cross-device. And that would be awesome. So that was one reason why we did it. The other reason is we needed it. We needed it for SSI work, the space app that I just showed. And then the next question that comes up is people ask, well, how do you fund Cesium development? You know, if you look at the GitHub, there's quite a few people that are working on it. We've been working on it for quite a while. Where is the funding coming from? So AGI does sell commercial terrain servers, provide data for Cesium. And we're also soon going to offer support, enhance our space visualization and integration with some of our products. So we are continuing developing this. This isn't, we didn't just make Cesium and then throw it over the fence and said we're done with it. We're really active and it's growing actually quite a bit since our 1.0 release. But it's not just AGI working on Cesium, which is really awesome. We have quite a nice community growing. It's been on GitHub for over two years now. Then it's been in development for about three and a half. We started in February 2011, right, just about right when the WebGL spec was announced. There's 18 contributors from AGI and 17 from other companies where NICTA would be the most prominent contributor doing a lot of terrain and imagery related work. Also got some nice contributions from Raytheon on triangulation. And then some individuals who submitted individual CLAs are from major companies as well. Now, it looks like we have 35 developers. We do not have 35 developers full time. One day, I think we might, but today we don't. We probably have more like, you know, maybe three to seven full time on it, which is still a nice size team for it. And then the forum, we have a pretty active forum that has maybe 10 to 25 posts a day. It has almost 400 people. So it's a great community. So with WebGL, it runs almost everywhere now. So big news that I'm sure many of you have heard by now is IE11 does support WebGL. And the WebGL support is actually pretty good. CZM will run on it. And for a GPU bound application where a lot of the work is being done on the video card, IE11 performance is good. For CPU bound, I need to do some more testing before I'm going to, I'll probably do a blog post to say where I think performance is on that side. Opera is actually really good too. So Opera at this point is, runs on Blink, which is the fork of WebKit. So Chrome and Opera really are running the same WebGL engine. So if you can't run Chrome, Opera is a good alternative to it. iOS and Safari, you know, that's one of two ways. So I think Apple did make an announcement for iOS WebGL support coming out very soon. There was some informal testing done on the NICDA national map application and CZM does run, but it does need some performance improvements. I've heard that across the board from a number of WebGL developers. So we'll definitely get that. Hopefully the combination of us and Apple will get that quality up to snuff. We don't technically support Android yet, but we pretty much always run on Android. Certainly if you take out your Nexus 7, it runs really well. But we want to get 100% tests running and passing before we say that we definitely support something. So the WebGL has just been getting better and better over the past couple of years. So great platform for reaching a lot of people now. So in terms of what CZM does, the core features for geospatial users is map layers, terrain, vector data, and 3D models. Then you can do the 3D, 2D, and Columbus views. We do all the standard map tiles from WMS, WMTS, TMS, OpenStreetMap, and so on. Then for the terrain, I'll talk about it in a couple of slides, but we do have a quantized mesh format that we use. But we can also still do height maps. The problem with streaming height map terrain data is it takes more processing to get that to become a mesh that we're going to render with WebGL. And also for flat areas, you know, you're wasting data there. For vector data, we have a JSON schema that we're working on that Brian mentioned in his talk in the first session for this track, which is CZML. And that is for time dynamic visualization. So that's for not just describing spatially where the data is, but how it varies over time. So instead of just saying, here's a position, you can say, well, here's a position at this time, and here's a position at this other time, and here's how you can interpolate those. Or here's a color at this time interval, and then here's a color at this other time interval. So it's very flexible, and certainly we use it a lot for our satellite visualization, which has fairly deep requirements. And then, of course, we do GeoJSON and TopoJSON on KMLs is on the way. And then for 3D models, I mentioned GLTF, and I'll do a demo of model conversion for that. Okay, so one thing I like for CZML is, you know, CZM has an API, and we have reference documentation and examples, and you can write a lot of JavaScript code and go right down to our API. But I think a lot of use cases, you can write server side code or offline code that generates a CZML file, which is a JSON file, and then you can see, and that is your application. It's really server side generating your client. It can be very simple. So I'll try to bring up another example. If you just go right to the main CZML website, you can do this right now, and there's this click to interact button. And let's see how fast it comes up. So this here, these are a few satellites that are moving around, and we generated this using one of our desktop products called SDK. I'm going to switch it to a brighter map. And this application is really just processing the CZML file. So you have all the satellites moving, and you don't have any really client side code because that's all in CZML itself. One cool thing to show while we're running this app is I'm going to zoom out home. I'll switch to Columbus view. So this satellite is a Minaya orbit, where it sometimes comes really close to the Earth, and then it gets really far away. So I'm going to click on the Minaya satellite here. I'll get the info. And that info box is also that is part of the metadata in CZML. So I'm going to speed up the animation. I'll do it just for a second. I don't want anyone to throw up. But you can zoom all the way down, follow it all the way up. It's pretty cool. So yeah, so CZML, check it out. It's a similar relationship. CZML to CZM is similar as KML to Google Earth. Okay, so what's new feature-wise? Yeah, an awful lot. So we'll go through each one of these in excruciating detail. Okay, we'll just hit a few of these. So we did a 1.0 release August 1st. And we were in beta, you know, beta in quotes for quite a while, but we hit 1.0, which really means the API is stable, and now we won't break it release to release. We may deprecate and then break over time, but we won't break it right away. And the 1.0 was really a great thing for us. We saw a huge uptick in adoption and contribution like the very second we hit 1.0. And there's been a lot of big releases recently, too, right? Open layers three, and then we're going to upcoming, we're going to see a leaflet 1.0, too. So we did the 3D models, the terrain format. We've improved translucency with order independent translucency. So you have intersecting or overlapping translucency. It looks better. You may have some trouble on some older Intel cards, but in CZM 1.2 that's coming out August 1st, you can turn that off if you need to. We started a plugin ecosystem, so I'll bring that up. So CZM got features and plugins, and folks are writing code that works with CZM but isn't in the core CZM repo, and they're doing some cool stuff. So Oculus Rift support, subsurface visualization by Necta, Leap Motion Controller. So we're starting to see more and more of these. So please, this is also an easier way to contribute to CZM if you don't want to go into the core code. You can still keep it, and we'll list it here for you. We can do an unlimited number of overlapping map layers now, too, before we were limited by the hardware limits in WebGL, and now we'll do a multi-pass, and you can do a lot of them. Okay, so I want to talk a little bit more for 3D models and terrain, a little bit more on the tech side. So GLTF is the GL transmission format, and it is tuned and optimized for being fast to download and fast to render in WebGL. And the way we do this is we have a JSON file that describes the node hierarchy of the scene and the materials, just kind of that metadata of the model. It's very easy to parse. And then all of the geometry, the textures, the animation data, the keyframes for the animation, the skins, that's all in binary data. And that could be external files, or it could be embedded, base64 encoded, embedded into a single GLTF. And anything that you might see in a traditional model where you might have to triangulate the triangles, you might have to split meshes into less than 64K vertices, all these types of preprocessing things, that's all done offline. And the GLTF defines a spec that's very easy and quick to render with WebGL. So what we do is we provide a converter from Klota, which is a popular interchange format, to convert your Klota file to GLTF. And I'll show a quick example. So this is on cesiumjass.org slash convert model HTML. So I'm going to take, I have a, DIE is a Klota file, and it references two textures, and I'm going to drag and drop them here. And they're getting zipped, and then they're going to upload it to the server, and they're going through the content pipe on to do all the transformations we need to create a GLTF model, which then we're going to download, and we could load with the cesium API, and then we'll see a preview here. And these models aren't too big, so hopefully they will come back soon. And we will let that process, it will finish, I promise you. And we will move on because we only have three minutes. Okay, so a little more on the train data. So we're using meshes, so we have a pyramid of levels of detail, right? So think of it very similar to how you would slice up imagery data. And each, instead of having an image, each thing is a mesh, and that mesh is quantized. So we're using fewer bits, and it has some extra data, like bounding volume so we can do efficient calling and level of detail, as well as some edge information so we can make adjacent nodes look good together. So this is something that we've really tuned to make it really fast to render. We downloaded a little bit of processing in a web worker, get it off to the pipeline. Let's see. All right. Well, that's a bust, that demo. Not bad, although other demos went well. So just some statistics. This is 80,000 lines of JavaScript code. It's quite a bit of JavaScript code. We do use AMD, so you could use required JS to just pull in the parts that you need. And we have 76,000 lines of test code. The numbers aren't that important, but the ratio to me is very important. So we have almost as much test code as we do regular code, well over 5,000 tests with 93% code coverage. And what's awesome here is I gave a talk last July, and these stats were basically the same, and that we had the same amount of test code as we did regular code, and the same amount of code coverage. Because usually over time, you know, you could write like a thousand line app and you have 100% code coverage. And then over time it deteriorates, but we have not, it has not deteriorated, so we're always running the tests just to keep the quality high. Okay. So to quickly finish up, I want to talk a little bit about CSM and the false 4G ecosystem. You know, we have a lot of great mapping APIs here, and I want to talk about how CSM has been cooperating with some of them, and two in particular, OpenLayers 3 and WebGL Earth. Okay, so OpenLayers 3, great product. Congratulations on the release. And there's been a lot of interest over the past two or two and a half years really on integration of OpenLayers 3 and CSM, and you know, is that something that we're looking at? When will that be? And there's been some great progress there by camp to camp. And this is something that AGI is not working on. AGI is a big fan and big supporter of it. But this is something that Camp to Camp has been doing. And here we see on the left the OpenLayers map, and on the right we see a CSM window, and you see there's vector data on here. And you just write an adapter and you attach it to an OpenLayers map, and then when you start adding data to the OpenLayers map, you also see it in the 3D window. And when the OpenLayers 3 mailing list, there's an initial version of this, it should be out pretty soon. The other thing, WebGL Earth 2, so many of you may have seen WebGL Earth, then that has its own WebGL engine. They rewrote WebGL Earth 2 and it's now built on CSIUM and it exposes a leaflet compatible API. I think you just need to rename the namespace and it's supposed to work with your existing leaflet apps. I have not tried it myself other than downloading the initial example, but it looks very promising and it's a nice, maybe very easy way to get started if you already have a leaflet app. It was very cool to see kind of the collaboration with, especially with CSIUM, kind of providing the underneath 3D for so many different apps. So maybe outside of the open source world, you know, we're seeing a lot of things happen with the Google Earth plugin. 64-bit Chrome has actually dropped support for the plugin and then Google has announced that they're going to drop NPAPI, which is the plugin technology from Chrome by the end of the year and it looks like they are going to go through with that. So we're seeing a lot of folks like Cube Cities here, they have a very cool screenshot that are now looking at CSIUM. They were Google Earth plugin developers and they're using KML and now they want to go to CSIUM because, you know, I don't, I think WebGL is going to be around for quite a while. So as Cube Cities, they do a lot of real estate visualization like showing me the hotels and highlight them by how much they cost for a given night and here's some early work they're doing with buildings and CSIUM. I'll finish up just with the roadmap. So on the near term, you know, 3D is awesome, our tech is really cool, but we need to be able to get your content into it for it to be useful. So we're improving CSIUM on the documentation side and doing a little more outreach for it and then we're looking to hit KML hard and do a really good implementation of KML, including all of the graphics improvements that we need to do underneath it. So you'll get the KML import and then also more CSIUM API to get better, you know, get better graphics. Then we're doing a little more community outreach than we've been doing in the past, so I'm really excited about doing that. And please jump on the forum as to those particular features that you're interested in, you know, there's some good conversations that are don't be shy. Please tell us what you want. So that's all. Thank you again so much for staying for the last talk. Who has the first question? Thanks. That's great. Just two questions for the rock climbing example. What kind of data did that use in the background, like what was it, DM and what was the satellite layer? Sure. So for the Seneca rocks, that terrain data there is NED data, which I believe is three to 30 meter in the US. And then the imagery there was Bing Maps. Okay. And then the second question was, I have actually, I'm working with somebody who had used Google Earth and obviously cannot use that in the future. So he was just, what would be the best format to get, for example, data out of post-JS? We have been using KML and Google Earth's plug-in. So would that KML be okay on CZML or would you rather do some other different format? So we're working on KML now, and, you know, we'll be working on it for the next several months. So one thing you could do is go on the forum and tell us what parts of KML that you're using, and we can see how that aligns with what we're looking to do. In fact, we might are, if you're using a small enough subset, we might already be supporting it. But if not, there's also GeoJSON and CZML. Thanks. Hi. I was wondering what tools are available for generating CZML? Yeah. So we have an open source project called, oh, and hey, just for the record, guys, here's the converted model that I just refreshed. We have an open source project called CZML Writer, and it's on GitHub. And this is a C-Sharp and Java library for writing CZML. There are some community projects as well. There's a Python library. And in here, I believe, I'm not sure if there's any converters anymore, but there's definitely just the writers to make it easy. So at least Java and C-Sharp for sure. And I think there's a Python one out there. What kind of options would you have for putting in something like X3D or CIDI-GML? Yeah. So we're really interested in doing 3D building. So I've been looking a little bit at CIDI-GML. Most likely what we'll do with CIDI-GML is something similar to what we do with the terrain data, where we will convert it to a tiled format that has binary nodes for rendering massive buildings. We'll also consider maybe doing CIDI-GML directly, which would be fine for small cities. But to me, CIDI-GML is very similar to Klota, where it's good interchange, but not necessarily good for rendering. The difference here, though, is if you're going to convert CIDI-GML to a tiled format for rendering, you have to preserve the semantics, right, because people want to know that that's a door and that's a window. So, but if you have building data, you're interested in that, please email me, because it's something that we're looking at and we're really interested in moving on. Can you describe a little bit about converting from the net data into the open grid or the open mesh, sorry? Yeah. So there's a, whew, there's so many different source terrain data formats. You know, so we use Google to read it, and then we have a content pipeline that runs on the server to generate those tiles. And that is one of the value add things that AGI sells. However, we don't want to lock anyone in, so we publish the format. So if you don't want to use AGI server, you know, you're welcome to use it to write the format directly. I feel like they'll already support stuff to format that other apps don't perform it. So we call it quantize mesh, and that is the format that CZM uses for rendering terrain. But you could also do tiled image height maps, but it's not as performant. I really don't recommend it, but if you already have that data available, I mean, you can do it. More questions? If you have terrain data and point data, can you project that point onto the elevation map? So you have, like a point, are you talking about rendering point clouds, or you have a point and you want to know what the altitude is of that point? You have your 3D mesh, and you have a point on that mountain side, and you don't know the elevation from your point data. Can you project it onto the map? Yeah, so we do have functions to get altitude. If you have a lot longer, you can get the altitude, and we have an example online where over mount Everest, we sample, we put a bunch of icons or place marks, and then we bring them all up to altitude. So, yeah. Other questions? This is clearly not, I don't know, probably not what a lot of people want to do with it, but I mean, the really rich 3D capabilities, but also an amazing number of other rich capabilities that would also be useful in a flat 2D space, you know, like the animation change over time animation. Is it easy to pop from the oblique view? Can you pop from the oblique view to just the standard old, you know, looking straight down on the earth view? That's probably quite easy to do, right? Yes. But that said, do you see a niche in just doing kind of making advanced visualizations possible easier in a traditional GIS view? So for 2D, I mean, we continue to support 2D as we do 3D. I can't say that right now, maybe in the next six months for AGI's roadmap that we're going to be aggressively looking to go beyond with 2D, but certainly it's a possibility. I mean, we are working closely with OpenLayers 3 guys, so we kind of see a nice collaboration there. So, you know, I can't say that we're going to go beyond, and certainly I'm not necessarily looking out beyond six months yet, but I can't say it's there in the next six months. Other, other questions? Yeah, hello. I tested a C-SUM in the firewall in a private network, and I had several issues connected to the datasets. I can choose from the side. Is there any special communication board? It should be open or something like that? So the question is that you're on a private network and you're having issues getting to the datasets. So we do provide some tile datasets that you could just bring onto that, onto the private network. Under the cesium plugins, there's a cesium assets repo, and we have, for example, the natural earth imagery tiled. And if you put that on the private network, I think you should be in good shape. The only thing that you'd need to consider is cores, cross origin resource sharing. So if you have one server with your imagery and another server getting your web app, you need to make sure that the server serving the imagery allows cross origin resource sharing. Okay. I have to correct myself. So the communication with the demo side, with the standard demo datasets, maybe can interrupt it, something like that. Is there a special channel or port that must be open for the firewall to connect these datasets? I don't think so. See me afterwards and maybe we could talk more about it, but I'm pretty sure that there doesn't need to be any extra firewall stuff. Any other questions? I think we have one more up here. The D3 demo, does that mean that D3 is built in or is it a separate library that you just built? Yeah. So the D3 app is an application that includes both Cesium and both D3. So that's not one. I mean, actually, it could be pretty cool for someone that write an API that maybe does some nice integration, but the integration there is done at the application level. We'll go ahead and add another question over here. Does it play well with other HTML elements on the page? Yeah. So the question is, does it play well with other HTML5 elements? And the answer is, yeah, it plays really well with them, which is one reason why WebGL is so great. So here's an application one of our users made where they did a lot of UI elements and these aren't, we didn't do this UI. A lot of this is their UI. So with WebGL, you know, this is just another div on the page and you can alpha blend them. You can put UI on top of it. You can even alpha blend the Cesium canvas and put things behind it. Yeah, it works really well. More questions? All right. Well, thanks everyone for staying after. Thank you.
 So, I was curious, how many people have heard of Cesium before this talk? Wow, awesome.  How many people are using it or evaluating it right now considering using it? Okay, cool.  Hopefully we'll see more hands at the end of this. So, my name is Patrick Hozi. I'm a  developer from a company called Analytical Graphics. And for this talk, you know, I want  to talk about Cesium, maybe like a pretty quick intro, but more about what's new since  Fals4GNA 2013. So, Cesium is an open source JavaScript library for doing 3D globes in  the web browser. It's built on WebGL, so it's very fast. A lot of developers have a long  history of doing 3D graphics in OpenGL, so we've done a lot of optimized graphics algorithms.  It's being used in a lot of different fields. It's fields that we didn't even anticipate  it being used. Certainly, AGI's roots are in aerospace, so we have a lot of people using  in aerospace field, but also geospatial is widely used, as well as some other ones that  maybe we didn't expect, sporting, entertainment, even some real estate folks have popped up,  people doing air traffic visualization, which is a great list of different problem domains.  So, in terms of what's new, you know, I want to talk about what's new in the API, what  are the new features. But the other thing that's new that's cool is there's a lot of  applications that have came out built on Cesium, so I wanted to show some of those. I'm going  to try to do all these live demos. I know the internet's been going internet out. I  do have some videos as backup if we need. If everyone wants to start streaming video  right now, that would be really, really useful for these demos. So, the first one is probably  maybe the most well-known one, which is CEN. When people hear CEN, Cesium, they go, well,  tell me about CEN. And we heard that a NORAD track CEN uses Cesium. So, I'll bring up this.  This is the only, this one is a video because it is, it only runs on Christmas Eve. All  right. So, NORAD has this big, big elaborate system for tracking Santa Claus on Christmas  Eve. They have Sonar, they have satellites and geosynchronous orbit, they have fighter  jets, they have Santa cans, and they use all of this technology to see where Santa is and  to give us Santa's position so that on a web map we can show where Santa is with an  animated 3D model here. So, this app is built on top of Cesium, AGI built this. We've done  it a few years in a row now, but new this past year was the 3D model we see here, the  animated model. And this is using a format called GLTF, the GL transmission format, which  is something I work on with Kronos, which is, which will be an open standard for streaming  3D models to the web browsers. So, think of a format like Kalada, that's XML based, that's  for interchange between 3D formats, 3D tools, I'll replay that, whereas GLTF is for getting  it to the web for runtime visualization. In terms of WebGL acceptance rates on people  who ask, well, where does Cesium run, how many machines can it run on? So, this went  to 20 million users in December and we had about a 50% WebGL success rate. So, we reached  10 million users. And these are all sorts of users, this isn't just tech community,  right? This is everyone, the general population. So, I think 50% is pretty good and 50% in  rising too. So, we'll see what the stats are this December. Okay. So, next up is something,  AGI is building on top of Cesium and this is for space situational awareness. Let's see  if the link works. So, AGI does a lot of work in space and we're tracking satellites and  we want to know where satellites are, where they will be and hopefully not if they're  going to hit each other, potentially come near each other. So, this here is called the  space book. Let me try to resize it a little bit. Oh, it's very big. Okay. And I'll zoom  out and these are all active, unclassified satellites and this is a real data coming  from AGI servers. I'll speed it up a little bit. And we can see them moving. We can zoom  in and take different angles on them. And then I'll zoom all the way back out. And we can  do things like we can take the stats and say, well, show me only operational ones. I know.  There's a lot of debris out there too. It's wild. And then this is still our full 3D globe  but it also does 2D and that's the same API. It just does, it just switches it to 2D and  you can spin around and all that kind of stuff. We can take it to 2 and a half D. We call  this Columbus view. This is particularly exciting when you have satellites because you see the  Geo belt very clearly out here and I'm not a space guy but I'll pretend a little bit  to be a space guy. So, and let's switch it back to 3D. And then this is just some image,  this is natural Earth imagery that we tiled up using TMS and I'll switch it to Bing imagery.  Oh, coming in pretty fast. And I'm going to turn on some terrain data. I know some folks  are going to Mount St. Helens for the fuel trip tomorrow. So let's go do a preview. And  here, another thing that's new with Cesium is the streaming terrain. We've now published  the format. Last year we were streaming height map data. Here we were streaming mesh data,  it's quantized mesh data that's really tuned for rendering. So it's very concise. We get  in a web worker and we very quickly create the final mesh that we're going to stream  in. And this is global terrain. So another place I really like to go is Seneca Rocks.  And this is the place I used to rock climb when I was younger and this was also a training  ground for World War II. I'll zoom straight down and this is amazing. So this fin, ooh,  train is not coming up here yet. Well, this fin actually peaks like straight up. It looks,  there we go. How many people are streaming video right now? So here, this peak is really  amazing to climb. People climb to the top of it. It's like 600 feet tall and you can  look out all around it. And I'll come back out home. So that's our SSA app. Okay. So  let's see. Okay. So this D3 demo is something that we did last year too. This was actually  a hackathon project. And we started this in one day, two of our developers, because we  were like, well, hey, we really like D3. I wonder what type of apps we could do with  CZM and D3 together. And the internet's looking like it's slowing down on us. Okay. So here  we have the classic health and wealth of nations. That's data that you see with a lot of D3  visualizations. And you see the D3 visualization where on the X axis, you see the income. And  on the Y axis, you see the life expectancy. And then over time, you're seeing how these  vary. But what we're also seeing here is the Columbus View version of it in CZM. And these  two are linked too. So I could click on one, I could mouse over one of these and it gets  highlighted, or I could mouse over in D3 and it gets highlighted out here in CZM. And then  you could also switch this to 3D. So it's still the same API. Cool. So I want to show  two more apps. And then I'll go into some of the features. So NICTA is a company that's  been doing a lot of work with CZM. They've been doing some very cool apps on top of it.  And they've also been contributing a lot to the code base. So one app that they're building  is the National Map. This is the Australia National Map. So Australia has fantastic open  data within their government. And this map here is built between NICTA working with the  Department of Communications and Geosciences Australia. So here they have a lot of different  raster data. I'll turn some of them. And then a wider way of vector data. So I'll come down,  I've been playing with the population estimates. I'll turn that on and that's an overlaid image  layer. Then I could click on one of these features and get some metadata about it coming  up here on the right. And then maybe I'll go over the broadband set and turn that on.  Then we're getting full 3D. And I could go for info for some of this and I could maybe  change the translucency. Let's make that really translucent. And this is in beta right now,  but you can check it out. Everything that I'm showing here, this is all online. So you  could go run these yourself. And the final demo I will show is also from NICTA, which  I think is very exciting stuff here. So this is an app called Duorama that they built on  top of Cesium. And it really features a Cesium streaming train and imagery in a sporting application.  Over here I'll speed it up a little bit. See what these guys are going. Then I'll slow  it down. So here we see gliders. We have several gliders going. They all had GPS on when they  did their trip. So they have position, time, information. And then we're playing it back  inside Cesium. And this has the streaming terrain data, which has probably 30 meter  in this part, as well as the streaming imagery, which is Bing imagery here. And then there's  some post-processing going on to get this kind of old school film effect. Then I could  switch between the individual people paragliding. And look at each of them. And then each one,  you get this height profile, this terrain profile. And it's really interesting to see  what they change altitude. They fly out to change altitude. Then you'll watch them fly  and go along the ridge, the ridge lines, the mountains. Very cool stuff. And what's awesome  is, I mean, this is JavaScript and WebGL all on your browser. So this is dooramba.com.  You have some GPS tracks for things you've done. You know, go upload it to here. It's  pretty nice. Cool. Okay, I'm glad the internet held up pretty well. All right. So a lot of  people ask me, they go, well, why did AGI make Cesium? You know, and it's a very fair  question. A lot of times in a technical talk, I don't even address it at all. But it's  such a common question. There's two reasons we made it. One was we had customers that  needed cross-platform visualization. And we had a bunch of C++ and OpenGL code. And we  thought about porting it. But at the time, WebGL was coming out. And we said, well, hey,  if we can get on WebGL, we can run with no install. Don't need admin rights. Don't need  a plug-in. We could go cross-platform, cross-device. And that would be awesome. So that was one  reason why we did it. The other reason is we needed it. We needed it for SSI work, the  space app that I just showed. And then the next question that comes up is people ask,  well, how do you fund Cesium development? You know, if you look at the GitHub, there's  quite a few people that are working on it. We've been working on it for quite a while.  Where is the funding coming from? So AGI does sell commercial terrain servers, provide data  for Cesium. And we're also soon going to offer support, enhance our space visualization  and integration with some of our products. So we are continuing developing this. This  isn't, we didn't just make Cesium and then throw it over the fence and said we're done  with it. We're really active and it's growing actually quite a bit since our 1.0 release.  But it's not just AGI working on Cesium, which is really awesome. We have quite a nice community  growing. It's been on GitHub for over two years now. Then it's been in development for  about three and a half. We started in February 2011, right, just about right when the WebGL  spec was announced. There's 18 contributors from AGI and 17 from other companies where  NICTA would be the most prominent contributor doing a lot of terrain and imagery related  work. Also got some nice contributions from Raytheon on triangulation. And then some individuals  who submitted individual CLAs are from major companies as well. Now, it looks like we have  35 developers. We do not have 35 developers full time. One day, I think we might, but  today we don't. We probably have more like, you know, maybe three to seven full time on  it, which is still a nice size team for it. And then the forum, we have a pretty active  forum that has maybe 10 to 25 posts a day. It has almost 400 people. So it's a great  community. So with WebGL, it runs almost everywhere now. So big news that I'm sure  many of you have heard by now is IE11 does support WebGL. And the WebGL support is actually  pretty good. CZM will run on it. And for a GPU bound application where a lot of the  work is being done on the video card, IE11 performance is good. For CPU bound, I need  to do some more testing before I'm going to, I'll probably do a blog post to say where  I think performance is on that side. Opera is actually really good too. So Opera at this  point is, runs on Blink, which is the fork of WebKit. So Chrome and Opera really are  running the same WebGL engine. So if you can't run Chrome, Opera is a good alternative to  it. iOS and Safari, you know, that's one of two ways. So I think Apple did make an announcement  for iOS WebGL support coming out very soon. There was some informal testing done on the  NICDA national map application and CZM does run, but it does need some performance improvements.  I've heard that across the board from a number of WebGL developers. So we'll definitely get  that. Hopefully the combination of us and Apple will get that quality up to snuff. We  don't technically support Android yet, but we pretty much always run on Android. Certainly  if you take out your Nexus 7, it runs really well. But we want to get 100% tests running  and passing before we say that we definitely support something. So the WebGL has just been  getting better and better over the past couple of years. So great platform for reaching a  lot of people now. So in terms of what CZM does, the core features for geospatial users  is map layers, terrain, vector data, and 3D models. Then you can do the 3D, 2D, and Columbus  views. We do all the standard map tiles from WMS, WMTS, TMS, OpenStreetMap, and so on.  Then for the terrain, I'll talk about it in a couple of slides, but we do have a quantized  mesh format that we use. But we can also still do height maps. The problem with streaming  height map terrain data is it takes more processing to get that to become a mesh that we're going  to render with WebGL. And also for flat areas, you know, you're wasting data there. For vector  data, we have a JSON schema that we're working on that Brian mentioned in his talk in the  first session for this track, which is CZML. And that is for time dynamic visualization.  So that's for not just describing spatially where the data is, but how it varies over  time. So instead of just saying, here's a position, you can say, well, here's a position  at this time, and here's a position at this other time, and here's how you can interpolate  those. Or here's a color at this time interval, and then here's a color at this other time  interval. So it's very flexible, and certainly we use it a lot for our satellite visualization,  which has fairly deep requirements. And then, of course, we do GeoJSON and TopoJSON on KMLs  is on the way. And then for 3D models, I mentioned GLTF, and I'll do a demo of model conversion  for that. Okay, so one thing I like for CZML is, you know, CZM has an API, and we have  reference documentation and examples, and you can write a lot of JavaScript code and  go right down to our API. But I think a lot of use cases, you can write server side code  or offline code that generates a CZML file, which is a JSON file, and then you can see,  and that is your application. It's really server side generating your client. It can  be very simple. So I'll try to bring up another example. If you just go right to the main  CZML website, you can do this right now, and there's this click to interact button. And  let's see how fast it comes up. So this here, these are a few satellites that are moving  around, and we generated this using one of our desktop products called SDK. I'm going  to switch it to a brighter map. And this application is really just processing the CZML file.  So you have all the satellites moving, and you don't have any really client side code  because that's all in CZML itself. One cool thing to show while we're running this app  is I'm going to zoom out home. I'll switch to Columbus view. So this satellite is a  Minaya orbit, where it sometimes comes really close to the Earth, and then it gets really  far away. So I'm going to click on the Minaya satellite here. I'll get the info. And that  info box is also that is part of the metadata in CZML. So I'm going to speed up the animation.  I'll do it just for a second. I don't want anyone to throw up. But you can zoom all the  way down, follow it all the way up. It's pretty cool. So yeah, so CZML, check it out. It's  a similar relationship. CZML to CZM is similar as KML to Google Earth. Okay, so what's new  feature-wise? Yeah, an awful lot. So we'll go through each one of these in excruciating  detail. Okay, we'll just hit a few of these. So we did a 1.0 release August 1st. And we  were in beta, you know, beta in quotes for quite a while, but we hit 1.0, which really  means the API is stable, and now we won't break it release to release. We may deprecate  and then break over time, but we won't break it right away. And the 1.0 was really a great  thing for us. We saw a huge uptick in adoption and contribution like the very second we hit  1.0. And there's been a lot of big releases recently, too, right? Open layers three, and  then we're going to upcoming, we're going to see a leaflet 1.0, too. So we did the 3D  models, the terrain format. We've improved translucency with order independent translucency.  So you have intersecting or overlapping translucency. It looks better. You may have some trouble  on some older Intel cards, but in CZM 1.2 that's coming out August 1st, you can turn  that off if you need to. We started a plugin ecosystem, so I'll bring that up. So CZM  got features and plugins, and folks are writing code that works with CZM but isn't in the  core CZM repo, and they're doing some cool stuff. So Oculus Rift support, subsurface  visualization by Necta, Leap Motion Controller. So we're starting to see more and more of  these. So please, this is also an easier way to contribute to CZM if you don't want to  go into the core code. You can still keep it, and we'll list it here for you. We can  do an unlimited number of overlapping map layers now, too, before we were limited by  the hardware limits in WebGL, and now we'll do a multi-pass, and you can do a lot of them.  Okay, so I want to talk a little bit more for 3D models and terrain, a little bit more  on the tech side. So GLTF is the GL transmission format, and it is tuned and optimized for  being fast to download and fast to render in WebGL. And the way we do this is we have  a JSON file that describes the node hierarchy of the scene and the materials, just kind  of that metadata of the model. It's very easy to parse. And then all of the geometry, the  textures, the animation data, the keyframes for the animation, the skins, that's all in  binary data. And that could be external files, or it could be embedded, base64 encoded, embedded  into a single GLTF. And anything that you might see in a traditional model where you  might have to triangulate the triangles, you might have to split meshes into less than  64K vertices, all these types of preprocessing things, that's all done offline. And the GLTF  defines a spec that's very easy and quick to render with WebGL. So what we do is we provide  a converter from Klota, which is a popular interchange format, to convert your Klota  file to GLTF. And I'll show a quick example. So this is on cesiumjass.org slash convert  model HTML. So I'm going to take, I have a, DIE is a Klota file, and it references two  textures, and I'm going to drag and drop them here. And they're getting zipped, and then  they're going to upload it to the server, and they're going through the content pipe  on to do all the transformations we need to create a GLTF model, which then we're going  to download, and we could load with the cesium API, and then we'll see a preview here. And  these models aren't too big, so hopefully they will come back soon. And we will let  that process, it will finish, I promise you. And we will move on because we only have three  minutes. Okay, so a little more on the train data. So we're using meshes, so we have a  pyramid of levels of detail, right? So think of it very similar to how you would slice  up imagery data. And each, instead of having an image, each thing is a mesh, and that mesh  is quantized. So we're using fewer bits, and it has some extra data, like bounding  volume so we can do efficient calling and level of detail, as well as some edge information  so we can make adjacent nodes look good together. So this is something that we've really tuned  to make it really fast to render. We downloaded a little bit of processing in a web worker,  get it off to the pipeline. Let's see. All right. Well, that's a bust, that demo. Not  bad, although other demos went well. So just some statistics. This is 80,000 lines of  JavaScript code. It's quite a bit of JavaScript code. We do use AMD, so you could use required  JS to just pull in the parts that you need. And we have 76,000 lines of test code. The  numbers aren't that important, but the ratio to me is very important. So we have almost  as much test code as we do regular code, well over 5,000 tests with 93% code coverage. And  what's awesome here is I gave a talk last July, and these stats were basically the same,  and that we had the same amount of test code as we did regular code, and the same amount  of code coverage. Because usually over time, you know, you could write like a thousand  line app and you have 100% code coverage. And then over time it deteriorates, but we  have not, it has not deteriorated, so we're always running the tests just to keep the  quality high. Okay. So to quickly finish up, I want to talk a little bit about CSM and  the false 4G ecosystem. You know, we have a lot of great mapping APIs here, and I want  to talk about how CSM has been cooperating with some of them, and two in particular,  OpenLayers 3 and WebGL Earth. Okay, so OpenLayers 3, great product. Congratulations on the release.  And there's been a lot of interest over the past two or two and a half years really on  integration of OpenLayers 3 and CSM, and you know, is that something that we're looking  at? When will that be? And there's been some great progress there by camp to camp. And  this is something that AGI is not working on. AGI is a big fan and big supporter of  it. But this is something that Camp to Camp has been doing. And here we see on the left  the OpenLayers map, and on the right we see a CSM window, and you see there's vector data  on here. And you just write an adapter and you attach it to an OpenLayers map, and then  when you start adding data to the OpenLayers map, you also see it in the 3D window. And  when the OpenLayers 3 mailing list, there's an initial version of this, it should be out  pretty soon. The other thing, WebGL Earth 2, so many of you may have seen WebGL Earth,  then that has its own WebGL engine. They rewrote WebGL Earth 2 and it's now built on CSIUM  and it exposes a leaflet compatible API. I think you just need to rename the namespace  and it's supposed to work with your existing leaflet apps. I have not tried it myself other  than downloading the initial example, but it looks very promising and it's a nice, maybe  very easy way to get started if you already have a leaflet app. It was very cool to see  kind of the collaboration with, especially with CSIUM, kind of providing the underneath  3D for so many different apps. So maybe outside of the open source world, you know, we're  seeing a lot of things happen with the Google Earth plugin. 64-bit Chrome has actually dropped  support for the plugin and then Google has announced that they're going to drop NPAPI,  which is the plugin technology from Chrome by the end of the year and it looks like they  are going to go through with that. So we're seeing a lot of folks like Cube Cities here,  they have a very cool screenshot that are now looking at CSIUM. They were Google Earth  plugin developers and they're using KML and now they want to go to CSIUM because, you  know, I don't, I think WebGL is going to be around for quite a while. So as Cube Cities,  they do a lot of real estate visualization like showing me the hotels and highlight them  by how much they cost for a given night and here's some early work they're doing with  buildings and CSIUM. I'll finish up just with the roadmap. So on the near term, you know,  3D is awesome, our tech is really cool, but we need to be able to get your content into  it for it to be useful. So we're improving CSIUM on the documentation side and doing  a little more outreach for it and then we're looking to hit KML hard and do a really good  implementation of KML, including all of the graphics improvements that we need to do underneath  it. So you'll get the KML import and then also more CSIUM API to get better, you know,  get better graphics. Then we're doing a little more community outreach than we've been doing  in the past, so I'm really excited about doing that. And please jump on the forum as to those  particular features that you're interested in, you know, there's some good conversations  that are don't be shy. Please tell us what you want. So that's all. Thank you again so  much for staying for the last talk. Who has the first question?  Thanks. That's great. Just two questions for the rock climbing example. What kind of data  did that use in the background, like what was it, DM and what was the satellite layer?  Sure. So for the Seneca rocks, that terrain data there is NED data, which I believe is  three to 30 meter in the US. And then the imagery there was Bing Maps.  Okay. And then the second question was, I have actually, I'm working with somebody who  had used Google Earth and obviously cannot use that in the future. So he was just, what  would be the best format to get, for example, data out of post-JS? We have been using KML  and Google Earth's plug-in. So would that KML be okay on CZML or would you rather do  some other different format? So we're working on KML now, and, you know,  we'll be working on it for the next several months. So one thing you could do is go on  the forum and tell us what parts of KML that you're using, and we can see how that aligns  with what we're looking to do. In fact, we might are, if you're using a small enough  subset, we might already be supporting it. But if not, there's also GeoJSON and CZML.  Thanks.  Hi. I was wondering what tools are available for generating CZML?  Yeah. So we have an open source project called, oh, and hey, just for the record, guys, here's  the converted model that I just refreshed. We have an open source project called CZML  Writer, and it's on GitHub. And this is a C-Sharp and Java library for writing CZML.  There are some community projects as well. There's a Python library. And in here, I believe,  I'm not sure if there's any converters anymore, but there's definitely just the writers to  make it easy. So at least Java and C-Sharp for sure. And I think there's a Python one  out there.  What kind of options would you have for putting in something like X3D or CIDI-GML?  Yeah. So we're really interested in doing 3D building. So I've been looking a little  bit at CIDI-GML. Most likely what we'll do with CIDI-GML is something similar to what  we do with the terrain data, where we will convert it to a tiled format that has binary  nodes for rendering massive buildings. We'll also consider maybe doing CIDI-GML directly,  which would be fine for small cities. But to me, CIDI-GML is very similar to Klota,  where it's good interchange, but not necessarily good for rendering. The difference here, though,  is if you're going to convert CIDI-GML to a tiled format for rendering, you have to  preserve the semantics, right, because people want to know that that's a door and that's  a window. So, but if you have building data, you're interested in that, please email me,  because it's something that we're looking at and we're really interested in moving on.  Can you describe a little bit about converting from the net data into the open grid or the  open mesh, sorry?  Yeah. So there's a, whew, there's so many different source terrain data formats. You  know, so we use Google to read it, and then we have a content pipeline that runs on the  server to generate those tiles. And that is one of the value add things that AGI sells.  However, we don't want to lock anyone in, so we publish the format. So if you don't  want to use AGI server, you know, you're welcome to use it to write the format directly.  I feel like they'll already support stuff to format that other apps don't perform it.  So we call it quantize mesh, and that is the format that CZM uses for rendering terrain.  But you could also do tiled image height maps, but it's not as performant. I really don't  recommend it, but if you already have that data available, I mean, you can do it. More  questions?  If you have terrain data and point data, can you project that point onto the elevation  map?  So you have, like a point, are you talking about rendering point clouds, or you have  a point and you want to know what the altitude is of that point?  You have your 3D mesh, and you have a point on that mountain side, and you don't know  the elevation from your point data. Can you project it onto the map?  Yeah, so we do have functions to get altitude. If you have a lot longer, you can get the  altitude, and we have an example online where over mount Everest, we sample, we put a bunch  of icons or place marks, and then we bring them all up to altitude. So, yeah.  Other questions?  This is clearly not, I don't know, probably not what a lot of people want to do with it,  but I mean, the really rich 3D capabilities, but also an amazing number of other rich capabilities  that would also be useful in a flat 2D space, you know, like the animation change over time  animation.  Is it easy to pop from the oblique view? Can you pop from the oblique view to just the  standard old, you know, looking straight down on the earth view?  That's probably quite easy to do, right?  Yes.  But that said, do you see a niche in just doing kind of making advanced visualizations possible  easier in a traditional GIS view?  So for 2D, I mean, we continue to support 2D as we do 3D. I can't say that right now,  maybe in the next six months for AGI's roadmap that we're going to be aggressively looking  to go beyond with 2D, but certainly it's a possibility. I mean, we are working closely  with OpenLayers 3 guys, so we kind of see a nice collaboration there. So, you know, I  can't say that we're going to go beyond, and certainly I'm not necessarily looking out  beyond six months yet, but I can't say it's there in the next six months.  Other, other questions?  Yeah, hello. I tested a C-SUM in the firewall in a private network, and I had several issues  connected to the datasets. I can choose from the side. Is there any special communication  board? It should be open or something like that?  So the question is that you're on a private network and you're having issues getting to  the datasets. So we do provide some tile datasets that you could just bring onto that, onto  the private network. Under the cesium plugins, there's a cesium assets repo, and we have,  for example, the natural earth imagery tiled. And if you put that on the private network,  I think you should be in good shape. The only thing that you'd need to consider is  cores, cross origin resource sharing. So if you have one server with your imagery and  another server getting your web app, you need to make sure that the server serving the imagery  allows cross origin resource sharing.  Okay. I have to correct myself. So the communication with the demo side, with the standard demo  datasets, maybe can interrupt it, something like that. Is there a special channel or port  that must be open for the firewall to connect these datasets?  I don't think so. See me afterwards and maybe we could talk more about it, but I'm pretty  sure that there doesn't need to be any extra firewall stuff. Any other questions? I think  we have one more up here.  The D3 demo, does that mean that D3 is built in or is it a separate library that you just  built?  Yeah. So the D3 app is an application that includes both Cesium and both D3. So that's  not one. I mean, actually, it could be pretty cool for someone that write an API that maybe  does some nice integration, but the integration there is done at the application level.  We'll go ahead and add another question over here.  Does it play well with other HTML elements on the page?  Yeah. So the question is, does it play well with other HTML5 elements? And the answer  is, yeah, it plays really well with them, which is one reason why WebGL is so great.  So here's an application one of our users made where they did a lot of UI elements and  these aren't, we didn't do this UI. A lot of this is their UI. So with WebGL, you know,  this is just another div on the page and you can alpha blend them. You can put UI on top  of it. You can even alpha blend the Cesium canvas and put things behind it. Yeah, it  works really well.  More questions?  All right. Well, thanks everyone for staying after.  Thank you.
06_Patrick_Cozzi_0_803.png 06_Patrick_Cozzi_804_5195.png 06_Patrick_Cozzi_5196_5351.png 06_Patrick_Cozzi_5352_5447.png 06_Patrick_Cozzi_5448_5579.png 06_Patrick_Cozzi_5580_6131.png 06_Patrick_Cozzi_6132_7019.png 06_Patrick_Cozzi_7020_9263.png 06_Patrick_Cozzi_9264_10163.png 06_Patrick_Cozzi_10164_10907.png 06_Patrick_Cozzi_10908_11903.png 06_Patrick_Cozzi_11904_12551.png 06_Patrick_Cozzi_12552_15431.png 06_Patrick_Cozzi_15432_25271.png 06_Patrick_Cozzi_25272_28787.png 06_Patrick_Cozzi_28788_28919.png 06_Patrick_Cozzi_28920_29003.png 06_Patrick_Cozzi_29004_32819.png 06_Patrick_Cozzi_32820_37139.png 06_Patrick_Cozzi_37140_41027.png 06_Patrick_Cozzi_41028_41495.png 06_Patrick_Cozzi_41496_42599.png 06_Patrick_Cozzi_42600_42863.png 06_Patrick_Cozzi_42864_43703.png 06_Patrick_Cozzi_43704_45275.png 06_Patrick_Cozzi_45276_45587.png 06_Patrick_Cozzi_45588_45851.png 06_Patrick_Cozzi_45852_46115.png 06_Patrick_Cozzi_46116_46595.png 06_Patrick_Cozzi_46596_47867.png 06_Patrick_Cozzi_47868_49811.png 06_Patrick_Cozzi_49812_50339.png 06_Patrick_Cozzi_50340_50387.png 06_Patrick_Cozzi_50388_51131.png 06_Patrick_Cozzi_51132_52487.png 06_Patrick_Cozzi_52488_52835.png 06_Patrick_Cozzi_52836_53063.png 06_Patrick_Cozzi_53064_53231.png 06_Patrick_Cozzi_53232_54131.png 06_Patrick_Cozzi_54132_54287.png 06_Patrick_Cozzi_54288_54419.png 06_Patrick_Cozzi_54420_55140.png