Today the Virtual Earth team announced the new version of the 3D control. To install simple goto to http://maps.live.com/?mkt=en-us and click on the 3D button. Checkout New York rendering very quickly with trees and weather! I noticed a new 3D option also “Use ansiotropic filtering”.
The full list of new features for the 3D control from NikolaF (you should subscribe to the VirtualEarth3D blog for everything VE3D):
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!
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.
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 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.
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 http://blogs.msdn.com/virtualearth3d/archive/2009/04/01/upcoming-new-version.aspx. 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.
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.
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*.