Skip to content

jMonkeyEngine 3.4.0-stable

Compare
Choose a tag to compare
@stephengold stephengold released this 30 May 20:12
· 7 commits to v3.4 since this release

A production-quality release of JMonkeyEngine with the following changes relative to v3.3.2-stable:

  • Upgrade considerations (a.k.a. potential breaking changes):

    • Gamma correction is enabled by default. In apps that default the setting (don't explicitly enable/disable it), scenes may appear brighter or darker than expected. (discussion, 6ade1a0)
    • Vsync is enabled by default. In apps that default the setting (don't explicitly enable/disable it), the frame rate and CPU/GPU usage may be lower than expected. (discussion, f34e660)
    • Maven artifacts aren't available from JCenter. Obtain them from the Maven Central Repository instead. (issue #1468, discussion)
    • The "jme3-bullet", "jme3-bullet-native", and "jme-bullet-native-android" libraries (physics using native Bullet) were removed from the Engine. For 3-D physics, use "jme3-jbullet" or Minie. (PR #1474)
    • The "jme3-blender" library (Blender importer) was removed from the Engine. To import 3-D models from Blender, use glTF as an intermediate format. (discussion, 221acaa)
    • Setters that had previously been deprecated to no-ops were removed. (PR #1510)
    • Utility classes that previously could be instantiated were made non-instantiable. (420b959, 1031e03, 145cc1b)
    • Protected the no-arg constructors for Camera (issue #1461, PR #1464) and InstancedNode (6402aad).
    • Added range checks to IndexBuffer.put() methods. (issue #1427)
    • The "jme3-jogl" library (JOGL backend) was removed from the Engine. If you must use JOGL instead of LWJGL, contact JogAmp. (discussion, PRs #1339 and #1368)
    • The "jme3tools.navigation" package was removed from the "jme3-desktop" library. If you need this package, it's available from the "jMonkeyEngine-Contributions" project. (issue #1430, PR #1450)
  • New features:

    • material definitions for physically-based rendering (PBR) of terrain (PR #1478)
    • map keys for non-US keyboard layouts when using LWJGL v3 (issue #942)
    • de-saturation for materials based on "Unshaded.j3md" (PR #1449)
    • embed a JME application in a custom UI design on Android devices (PR #1494)
    • extensions to JoystickCompatibilityMappings (PR #1483)
    • flesh out the new animation system:
      • more getters/setters for Action (PR #1489) and AnimComposer (PR #1376)
      • a factory class to generate animations programmatically (issue #1453, PR #1507)
      • incorporate animations into cinematic cutscenes (PR #1508)
      • more methods to create and manipulate armature masks (issue #1499, PR #1504)
      • capability to remove morph targets from a Mesh (PR #1378)
    • enhance the glTF importer:
      • handle "unlit" materials (PR #1463)
      • handle URIs (PR #1396)
      • handle lights defined using the "KHR_lights_punctual" extension (PR #1443)
    • LWJGL v3 support for Linux-on-ARM and 32-bit Windows (discussion, 6711986)
    • more ways to look up appstates by ID (a79be13)
    • LightControl support for spotlights (PR #1466)
    • combine GlowColor and GlowMap in a single Material (PR #1444)
    • add fromRGBA255() and chainable setters to the ColorRGBA class (a057a6d, 37f1e7f)
    • serialize final fields across a network (PR #1505)
    • more getters/setters for Camera (PR #1492), EnvironmentCamera (issue #1447, PR #1481), and Renderer (PR #1482)
    • pack ambient-occlusion (AO) data into the metallic roughness map of a PBR material (PR #1403)
    • handle named groups when importing 3-D models in OBJ format (PR #1369)
    • a unified mechanism to manage the render targets of a FrameBuffer (PR #1401)
    • depth-only copy of a FrameBuffer (PR #1400)
    • performance profiling of render() and postRender() methods (PR #1485)
  • Bugs addressed:

    • no sound on Android devices (issue #1239, PR #1475)
    • inaccurate frame rate when using LWJGL v3 (issue #1455)
    • LWJGL context restart issues (PR #1526, issues #844 and #1445)
    • OGRE importer doesn't set the initial pose (issue #1395)
    • jme3-jbullet depends on unavailable Maven artifacts (PR #1541)
    • cloning a Joint (issue #1469, PR #1470)
    • logic error in Transform.interpolateTransforms() (issue #1394)
    • crashes in TransformTrack.getTranslations() and getRotations() (PR #1532)
    • crashes while compiling shaders (PRs #1456 and #1458)
    • crash while importing from glTF (PR #1442)
    • crash with NegativeArraySizeException (PR #1377)
    • assertion failure in TouchTrigger.touchHash() (PR #1448)
    • wrong center location for a spherical LightProbe (PR #1440)
    • animation uses wrong easing function (PR #1397)
    • material parameter of type IntArray not set (issue #1564, PR #1565)
    • incorrect import of UTF-8 data (issue #1436, PR #1437)
    • unable to locate OpenAL library (issue #1383, PR #1432)
    • multiple issues involving iOS devices (PR #1473)
    • multiple issues involving instanced geometries (PRs #1457 and #1467)
    • gamepad split into 2 input devices (PR #1454)
    • SSAO interferes with transparent unshaded materials (discussion, PR #1512)
    • FXAA filter disables transparency (discussion, PR #1517)
    • can't generate mipmaps for cubemap faces (issue #1222, PR #1409)
    • bounding-sphere merge yields NaN (issue #1459, PR #1465)
    • LOD causes terrain patches to disappear (issue #1382, PR #1418)
    • crash while de-serializing a WireFrustum (issue #1462)
    • crash in LogicalOggStreamImpl (issue #1244, PR #1480)
    • crash while cloning a TerrainPatch (issue #1391)
    • MorphControl doesn't override JmeCloneable/Savable methods (issue #1548, PRs #1549 and #1553)
    • incomplete serialization of TerrainQuad (PR #1476)
    • inaccurate de-serialization of DistanceLodCalculator (issue #1381, PR #1385)
    • checkSetParam() warning while creating sky (issue #1414, PR #1438)
  • General improvements:

  • New deprecations:

    • LightNode class (issue #1033, PR #1042)
    • com.jme3.anim.Weights class (PR #1523)
    • 15 methods in the FrameBuffer class (PR #1401)