Skip to content

v1.4.0

Compare
Choose a tag to compare
@emxsys emxsys released this 17 Apr 16:49
· 457 commits to develop since this release

NASA WorldWind v1.4.0 - Release Notes

Released July 16, 2012

Note: this is a mirror of the NASA WWJ v1.4.0 release, created for posterity.

Adds support for Collada, fixes issues with rendering surface shapes at the poles and adds Bing imagery.

Archived Subversion Release

This archived World Wind Java release has been migrated to GitHub from the World Wind Subversion server. Subversion hosts the original v1.4.0 source code. The source code links in the assets reference the initial commit to GitHub and are incorrect.

v1.4.0 (July 16, 2012)

  • Calculate expiration time using the difference between the Expires and Date headers. This guards against clock skew between client and server.
  • Added ZeroElevationModel example.
  • Fixed bug in KML NetworkLinkControl. NetworkLinkControl expiration time should be read from NetworkLinkControl in the target document, not the document that contains the link. Added test file to make sure that the NetworkLinkControl expiration time takes priority over expiration time set in the HTTP headers.
  • Modified pre-cache methods of HighResolutionTerrain to throw InterruptedException rather than converting it to WWRuntimeException.
  • Added example that shows how to build a custom renderable.
  • Removed normalization of line in HighResolutionTerrain intersection calculations. Added pre-caching by Sector to HighResolutionTerrain.
  • Implemented expiration of KML NetworkLinks expiration set in HTTP headers.
  • Added missing constant for Drop Zone graphic to list of supported graphics in BasicArea, per forum post.
  • Added unit test to make sure that the tactical graphic factory supports all of the graphics that are listed in the developer's guide
  • Added documentation to the Globes package.
  • Added Bing imagery to default layer list.
  • Minor corrections to HighResolutionTerrain.
  • Added readme file for Windows WebView implementation.
  • PhaseLine class did not include Release Line in its list of supported graphics.
  • Corrected problem in SurfaceObjectTileBuilder that caused surface shapes to appear blurry when drawn in a small window, per forum post.
  • Added COLLADA files to KML manual test instructions.
  • Added missing icon for MIL-STD-2525C Forward Edge of Battle Area (FEBA) graphic in Anticipated state. Apply changes in status to the FEBA symbols. WWJ-293
  • Modified KMLRoot.parse to only accept XML documents that begin with a tag from the KML schema. This allows malformed KML documents that do not contain a root tag to be parsed, but does not allow COLLADA files to be accidentally parsed as KML.
  • Changed KMLRoot.resolveRemoteReference to make sure that a file was successfully parsed before returning a KMLRoot. These changes allow KML files that contain COLLADA models to be loaded by URL.
  • Enable backface culling in COLLADA models. Some models do not render correctly without culling.
  • Modified globe-dragging code to use the terrain object even if it's not the top object.
  • Use one buffer in ColladaMeshShapes for vertex coordinates, normal vectors, and texture coordinates.
  • COLLADA documentation.
  • Do not convert entities in EntityMap to lower case. The entities are case sensitive. Also fixed error in the entity map. ⟨ and ⟩ entities were listed twice.
  • Fixed infinite loop in EntityMap.replaceAll. The loop never terminated when an entity was matched in the input string that did not have a replacement. (WWJ-292)
  • Marked XMLEventParserContext.resolveInternalReferences as deprecated. This method was an early attempt to handle KML reference resolution that was accidentally left in the code. This reference resolution is now handled by KMLRoot and KMLStyleMap.
  • Set position of COLLADA node shapes every frame so that the nodes will pickup changes in the ColladaRoot position. Added test program that moves a model along a path.
  • Split COLLADA number array strings on any whitespace, not just spaces.
  • Added a test program to load a COLLADA file directly (not part of a KMZ archive).
  • Added package document for COLLADA packages.
  • Modified MeasureToolController to use the terrain position for rubber-banding rather than the current position, which incorporates shape positions in addition to terrain. Also modified MeasureTool so that the readouts both on-screen and in the position-list panel correspond.
  • Modified ScreenCreditController placement factors and enabled it by default.
  • Added Bing image layer.
  • Fixed NullPointerException thrown while attempting to render a 2525 target graphic without a text string. Also, do not put "null" into a route graphic's text if the text modifier is missing. (WWJ-291)
  • Fixed bug in MIL-STD-2525C Route class. Route was incorrectly applying route highlight attributes to the normal attributes of the control points.
  • Highlight a COLLADA model as a single unit.
  • Removed quirky logic in BasicDragger that computed a different reference point based on the current altitude. This logic was implemented several places in the WW system and has proven to be problematic because the calculations don't come close to the results computed by the alternative logic.
  • Reverted change 578 that was specifying EPSG:4326 but lon/lat ordering, which is incorrect for that CRS. The original specified CRS:84, which has lon/lat ordering.
  • Cache results of some computations in ColladaMeshShape.
  • Added support for COLLADA bind_vertex_input element.
  • Added configuration for DocumentSource to KML parser and double_sided to COLLADA parser. These elements are included in most files produced by SketchUp.
  • Added parser configuration for COLLADA elements that are valid COLLADA markup, but are not used by World Wind. This eliminates warnings about unsupported XML tags when parsing some COLLADA files.
  • Fix bug that prevented the TacticalGraphicFactory from creating the MIL-STD-2525C Unmanned Aircraft Route graphic.
  • Apply KML Model's scale and orientation to COLLADA shape.
  • Added support for COLLADA lines primitive.
  • Support COLLADA nodes that contain multiple instance_geometry elements.
  • Do not apply material to COLLADA shapes when in picking mode.
  • Reset ColladaTraversalContext between traversals (fixes bug applying transform matrix). Check to make sure that a COLLADA model has geometry before trying to create a shape for it.
  • Do not retrieve network links in inactive regions. Even though KMLNetworkLink extends KMLAbstractContainer, it should behave a feature for purposes of region culling.
  • Several small optimizations to COLLADA and KML network link code. Mostly caching results of hash map lookups that are accessed many times while rendering a deep tree of network links.
  • Augmented documentation for WorldWindow.getGpuResourceCache() to indicate that it should not be called by applications.
  • Modified ColladaTriangleMesh to render all the Triangles elements in a COLLADA node instead of just one. This allows batch rendering to work correctly, and eliminates unnecessary GL state switching.
  • Compute extent of COLLADA model for view frustum culling. Extent calculation does not yet handle nodes that are rendered multiple times with different transforms.
  • Changed KMLUtil.getPositions to handle Model geometry.
  • Added test files for COLLADA models.
  • Added flag to override horizon clipping in PointPlacemark.
  • Use one ordered renderable to draw an entire COLLADA node, instead of one for each shape within the node. Some COLLADA models render the same geometry multiple times with different materials, and treating each piece as its own ordered renderable was causing z-fighting.
  • Support loading COLLADA from a URL.
  • Moved EntityMap to core to remove core dependency on worldwindx package.
  • Added support for resource maps in KML models.
  • ColladaTriangleMesh now creates a new object to represent the mesh as an ordered renderable. We can't add the mesh itself to the ordered renderable queue because the same mesh may be rendered multiple times with different transform matrices.
  • Partial handling of materials defined in COLLADA models.
  • Moved parallel path generator methods to WWMath.
  • Added equality test to TiledImageLayer's test for expired texture tiles.
  • Made TextureTile.updateTime atomic.
  • Improved how COLLADA code finds the texture for an effect. Now actually uses the shader element to locate the texture instead of just grabbing the texture from the param element.
  • Added COLLADA schema (version 1.4.1).
  • Convert units COLLADA doc to meters.
  • Added support for transform matrices in COLLADA nodes.
  • More work on COLLADA textures. Resources with a KMZ are now resolved correctly.
  • Added CacheLocationConfiguration example.
  • Made the renderables collection in RenderableLayer protected rather than private.
  • Apply textures to COLLADA models.
  • Fixed bug that caused TacticalSymbol text to not change opacity when the symbol opacity changed. (WWJ-287)
  • Fixed a bug which can cause a TacticalSymbol to incorrectly reuse a partially complete cached layout, causing the symbol to render without a graphic modifier that was not available when the layout was computed. (WWJ-286)
  • Changed border on Alternative Operational Condition modifiers from white to black. Black looks better, and matches the examples images in MIL-STD-2525C (pg 19).
  • Draw 2525 Alternate Operational Condition when the SymbologyConstants.OPERATIONAL_CONDITION_ALTERNATE modifier is set. (WWJ-285)
  • Handle resolution and rendering of COLLADA instance_nodes. Added generic class ColladaLibrary that handles all COLLADA library elements.
  • Added method to read data from a COLLADA accessor into a Buffer.
  • Repaired DTED reader per forum post.
  • Added classes for parsing Collada files.
  • Marked SymbologyConstants.SHOW_LOCATION as deprecated. Use TacticalSymbol.setShowLocation instead.
  • Performance improvement in TacticalGraphicLabel: Cache the bounds of each line of text. Computing text bounds is expensive, and only needs to happen when the text or text size changes.
  • Modified Sector.splitBoundingSectors to handle the edge case where the radius of the circle is equal to one quarter of the globe radius. (tan(r) is not defined in this case.)
  • Modified Sector.computeBoundingBox to compute the correct bounding box for a sector that spans 360 degrees of longitude. This resolves problem picking surface shapes that cover a pole.
  • Fixed problem in AbstractSurfaceShape: bounding sector was not computed correctly for a polygon that enclosed a pole.
  • Changed how Sector.splitBoundingSector(LatLon,double,Globe) computes min and max longitude. The previous method did not compute the correct bounding sector when the circle was close to a pole.
  • Corrected documentation on SurfaceImageLayer.addImage.
  • Use StringBuilder instead of StringBuffer in Sector.toString. This object is only used by one thread, so there's no reason to use a StringBuffer.
  • Fixed rendering of surface shapes that cover either the North or South pole.
  • Reapply: Disable writes to depth buffer in AbstractShape when the shape is transparent.
  • Disable writes to depth buffer in AbstractShape when the shape is transparent.
  • Commented out Path optimization that was causing Paths' eye distance not to be updated.
  • Updated address of USGS NAIP.
  • Corrected globe-based calculation of icon point to account for the elevation.
  • Reduced the test for equality when checking WMS server names.