New Version Released!

Our new version has gone live.  Head on over to and click “3D” to upgrade.  This release is billed primarily as a perf and bug release because it doesn’t add a lot of new features at the end-user level (though I think you will be pleased with the perf improvements), but we did have time to throw in some good stuff for the devs.

I’ve updated the Samples entry, and clicking on the link should get you the new sample set.  As usual, please pass along any problems in comments or blog feedback.  The samples are mostly the same, with a few new additions, but they have been cleaned up for best practices and new features.  I do recommend that you take a glance at them even if you’re already familiar with the API.  The Camera sample is most changed, and hopefully should help explain the flow of camera control a little better.

Get the code!

Here’s a sampling of new and expanded areas:

Initialized event
 A new event on RenderEngine that simplifies the startup scenario.  Check out SimpleForm to see it.  Remember that use of this event or FirstFrameRendered is now required!

Anisotropic Filtering
 Greatly improves the appearance of terrain when at an angle.  It’s off by default, since there are some graphics cards that don’t play nice with it (usually old and rare, but still).  You can turn this on through the website in the options box, or you can set it programmatically.  See SimpleForm.

Dem Data
 The ability to supply custom DEM data, and have it automatically stitched into existing data.  Previously DEM datasources did not work very well, mostly because we did not automatically stitch.  They are still a bit trickier than imagery, but there’s a new sample DemData to help you out.

 An interface that allows automatic and efficient query of a location to determine elevation as data changes.  ActorDataSource now uses it.  Essentially, you register this object and report its Lat/Lon position.  If the ground or other solid object moves or changes there, you will get a call to update.

Manual Rendering
 Manual render functions that allow use your own thread as the render thread, good for offline rendering or incorporation into another product.  RenderEngine.ManuallyInitializeRender and ManuallyRenderNextFrame.

Datasource ConnectionParameters
 Helper function for specifying data sources without a content manifest.  The string parameter was very hard to use, this is nicer.  There are also a few new options, like allowing caching of data specified this way.  See TerrainImages.

 Allow display of a stylized sky with constellations.  This is used on the website in Road Mode, but you can set it yourself.  See SimpleForm.

 Support for running code built against previous control versions, if it meets certain requirements.  I’ve outlined this in  To show it working, I’ve set up a page with samples built from the previous version and from the new version.  Both sets work just fine with the new release.

Pixel-width lines
 GeometryManager supports pixel-width 3D lines (previously only single-pixel or meter-width).  See the Camera sample.  We also now have nice looking text labels.  See the XFile sample.

Constant value datasources
 Helper functions for supplying flat color or elevation data.  The Mandelbrot sample uses one to display flat elevation.  Please note that a DEM and an Imagery datasource are actually required for proper display.  These constant value sources are useful for this case.

Terrain Scaling
 WorldEngine.Min/MaxElevationScaling.  It is actually possible to have varying scale based on your altitude, but there is some cost associated and I recommend that you set the two values equal to each other.  Our default value is 1.0, unscaled.

Override Loading Screen
 You can now render (or suppress) the loading screen (affectionately known as “The Circle Of Hope” since our first version, back when the startup flow was a bit less stable than it is now).  In the very simplest case, write this:

 class MyControl : GlobeControl
    protected override void OnPaintLoading(…)

This will get you a black screen.  You can also grab a reference to the control’s Graphics object from the PaintEventArgs and draw anything you like.

Building culling value
 Allows control of how many buildings are displayed, based on distance and size of the buildings.  WorldEngine.BuildingCulling.  The effectiveness of this varies on hardware — some hardware benefits a great deal, some very little.

Turn on/off street level navigation
 Can turn off some of the special navigation effects that occur when right next to the ground, such as sticking to the ground, and the screen drag regions on the sides of the screen when at low altitude.  WorldEngine.Enable*.

We have not yet updated the docs.  However, we did not make many fundamental changes to the code from an API perspective, and in fact existing code is as much as possible exactly the same.  So it is just lacking detail on the new features, and still a good reference.

Comments (13)

  1. Garee says:

    Are there any changes to the control that might cause issues with peripherals like the Space Navigator? Mine no longer works correctly since I installed the new 3D control with the wrong action being performed when you move the navigator in a particular direction. For example, pushing down on the navigator used to zoom in, but now it rotates the map anti-clockwise.

    I’ve upgraded the navigator drivers to the latest version but that hasn’t made any difference.

  2. NikolaiF says:

    Hi Garee,

    Unfortunately yes we did break the space navigator.  Inadvertently, obviously, and in fact I myself am the guilty party.  We’re working on how to fix it right now.  I will post to the blog when we have a solution.

  3. Garee says:

    Hi Nikolai, many thanks for confirming this – at least I know it isn’t a problem at my end!


  4. Gold Coast says:

    Due to popular demand, InfoStrat just published an intermediate fix to get their InfoStrat.VE control

  5. NOTE: This was cross posted from here Due to popular demand, InfoStrat just published an intermediate

  6. Koka says:

    After installing the latest VE3D I also noticed that it broke the Surface Concierge application. I will check with the Surface Support to see if they will provide a fix for this.

  7. NikolaiF says:

    That is correct.  Surface is, however, intended to be run in a controlled environment so it’s rather a different animal than, say, the Infostrat project.  Surface support channels are definitely the way to go.

  8. Nate Lawrence says:

    So… when I installed the new version on four computers, the newer two appeared to be using Seadragon to load in the satellite imagery. Is this correct?

    If so:

    A) Am I correct in thinking that this is the first public release of VE3D to use it?

    B) When will we see Bird’s Eye View imagery streamed in via Seadragon? Would "before 2010" be a safe estimate?

    C) Why only on the newer two computers? What is the minimum requirement for a GPU to utilise the advanced tile loading?

    Thanks for any and all answers.

  9. dunclaw says:

    The VE3D control does not currently use any of the Seadragon code.  If you’re refering to the smooth blend in of imagery and models, the tiles have been blended in since the March ’08 release and the building fade-in just got added.

    Generally, to get the best quality options, you’ll need a computer with a pixel shader > 2.0, 128MB video RAM, and at least 1GB of system RAM.

  10. NikolaiF says:

    It’s not using Seadragon.  I assume you’re referring to the fade effect where the newer LOD fades in rather than "pops".  The previous VE3D version actually did it too, but it has been improved in this one, so you may be noticing it more now.  Seadragon and VE3D (and others) share a similar problem space so you’re likely to see lots of similar solutions 🙂

    A) So, no.

    B) I can’t speak to future plans here, sorry.

    C) We require a card that supports pixel shader 2.0, and we disable by default on single-cpu/core machines.  In the latter case, you can force them back on in Options->3D Settings->Preferences->Use animation.  Depending on your machine this may slow down data loading, as it forces us to render more often.

  11. Nate Lawrence says:

    Thanks to both of you for the prompt replies. The technical specs definitely help.

    You’re right, I was referring to the smooth fade in of the tiles. I guess I just hadn’t tested VE3D on newer hardware before and was curious, being that the Silverlight Map Control had not long ago gone into CTP using the Deep Zoom implementation of Seadragon and your work resembled what I had seen there.

    Perhaps it’s only an optical illusion but the tiles did seem to actually load in faster on the hardware with the better graphics cards. I’m sure that’s incredibly obvious but I would have thought it depended more on the network or perhaps CPU than the GPU.

    Again, thanks for the replies and I’m looking forward to seeing what you guys are working on next. Perhaps on Channel 9 when the time is right.

  12. NikolaiF says:

    Hi guys,

    The Space Navigator is fixed.  The latest build on has the fix, but it’s an "optional" upgrade, which means you’ll have to uninstall your current one, and reinstall from the site.  You’ll also get the snazzy new logo.

    Sorry for the break, and for the delay!