what's new.md 21 KB

3.3.0

Major updates

  • GUI
  • Gizmo Support (TrevorDev)
    • Gizmo and GizmoManager classes used to manipulate meshes in a scene. Gizmo types include: position, rotation, scale and bounding box. Doc (TrevorDev)
    • New behaviors: PointerDragBehavior, SixDofDragBehavior and MultiPointerScaleBehavior to enable smooth drag and drop/scaling with mouse or 6dof controller on a mesh. Doc (TrevorDev)
    • Added attachToBoxBehavior to attach UI to a bounding box (TrevorDev)
    • Gizmo manager's internal gizmos are now public (TrevorDev)
    • Ability to customize meshes on gizmos (TrevorDev)
    • Added ignoreChildren field to bounding box to save performance when using heavily nested meshes (TrevorDev)
    • Add uniform scaling drag support to scale gizmo (TrevorDev)
    • Support interacting with child elements (TrevorDev)
  • Particle system improvements (Deltakosh)
    • Added a ParticleHelper class to create some pre-configured particle systems in a one-liner method style. Doc (Deltakosh) / (DevChris)
    • Improved CPU particles rendering performance (up to x2 on low end devices)
    • Added support for isBillboardBased. Doc
    • Added support for billboard mode. Doc
    • Added support for minScaleX, minScaleY, maxScaleX, maxScaleY. Doc
    • Added support for radiusRange for sphere emitter. Doc
    • Added support for radiusRange and heightRange for cone emitter. Doc
    • Added new point emitter. Doc
    • Added new hemispheric emitter. Doc
    • Added support for ParticleSystem.BLENDMODE_ADD alpha mode. Doc
    • Added support for color gradients. Doc
    • Added support for pre-warming. Doc
    • Added support for minInitialRotation and maxInitialRotation. Doc
    • Added support for size gradients. Doc
    • Added support for life time gradients. Doc
    • Added support for angular speed gradients. Doc
    • Added support for velocty gradients. Doc
    • Added support for limit velocty gradients. Doc
    • Added support for noise textures. Doc
  • Added SceneComponent to help decoupling Scene from its components. (sebavan)
  • Added Environment Texture Tools to reduce the size of the usual .DDS file (sebavan)
  • Playground can now be used with TypeScript directly!. Demo (Deltakosh, NasimiAsl)
  • GUI and Inspector are now ES-Modules (RaananW)
  • Added support for noise procedural textures. Doc (Deltakosh)
  • Added new PhotoDome object to display 360 photos. Demo (SzeyinLee)
  • Added Video Recorder Documentation (sebavan)

Updates

  • Updated TypeScript version to new major 3.0.1 (christopherstock)
  • All NPM packages have latestand preview streams #3055 (RaananW)
  • Added New Tools Tab in the inspector (env texture and screenshot tools so far) (sebavan)
  • Moved to gulp 4, updated dependencies to latest (RaananW)

GUI

  • Added dead key support and before key add observable to InputText. Doc(theom)
  • Added TextBlock.computeExpectedHeight, added TextWrapping.Ellipsis as TextBlock.wordWrapping possible value (adrientetar)
  • New vertical mode for sliders in 2D GUI. Demo (Saket Saurabh)

Core Engine

  • Added support for muyltiple clip planes. Demo (Deltakosh)
  • Added new MixMaterial to the Materials Library allowing to mix up to 8 textures (julien-moreau)
  • Added new BoundingInfo.scale() function to let users control the size of the bounding info (Deltakosh)
  • Added new Animatable.waitAsync function to use Promises with animations. Demo Here (Deltakosh)
  • Added the choice of forming a closed loop to the catmull-rom-spline curve3 (johnk)
  • Added support for specifying the center of rotation to textures (bghgary)
  • Added webVR support for Oculus Go (TrevorDev)
  • Added ability to not generate polynomials harmonics upon prefiltered texture creation (sebavan)
  • Added predicate function to customize the list of mesh included in the computation of bounding vectors in the getHierarchyBoundingVectors method (sebavan)
  • Added webVR constructor options: disable laser pointer toggle, teleportation floor meshes (TrevorDev)
  • Get a root mesh from an asset container, load a mesh from a file with a single string url (TrevorDev)
  • UtilityLayer class to render another scene as a layer on top of an existing scene (TrevorDev)
  • AnimationGroup has now onAnimationGroupEnd observable (RaananW)
  • New serialize and Parse functions to serialize and parse all procedural textures from the Procedural Textures Library (julien-moreau)
  • Added a new mesh.ignoreNonUniformScaling to turn off non uniform scaling compensation (Deltakosh)
  • AssetsManager tasks will only run when their state is INIT. It is now possible to remove a task from the assets manager (RaananW)
  • Added sprite isVisible field (TrevorDev)
  • EnvironmentHelper will recreate ground and skybox meshes if force-disposed (RaananW)
  • Added viewport caching mechanism in engine (sebavan)
  • Added unpackFlipY caching mechanism in engine (sebavan)
  • Added rebind optimization of video texture (sebavan)
  • Fix Background Material effect caching (sebavan)
  • Prevent texture getSize to generate garbage collection (sebavan)
  • Prevent lodGenerationScale and lodGenerationOffset to force rebind (sebavan)
  • Added poster property on VideoTexture (sebavan)
  • Added onUserActionRequestedObservable to workaround and detect autoplay video policy restriction on VideoTexture (sebavan)
  • Sound now accepts MediaStream as source to enable easier WebAudio and WebRTC integrations (menduz)
  • Vector x, y and z constructor parameters are now optional and default to 0 (TrevorDev)
  • Added and removed camera methods in the default pipeline (TrevorDev)
  • Added internal texture format support for RenderTargetCubeTexture (PeapBoy)
  • Added canvas toBlob polyfill in tools (sebavan)
  • Added RawCubeTexture class with RGBD and mipmap support (bghgary)
  • Added effect layer per rendering group addressing Issue 4463 (sebavan)
  • Added predicate function targetMask argument to scene.beginWeightedAnimation, scene.beginAnimation, scene.stopAnimation, and animatable.stop to allow for selective application of animations. (fmmoret)
  • Oculus GO and GearVR 3dof controllers will now rotate with the user's head if they turn around in their room (TrevorDev)
  • Added onPoseUpdatedFromDeviceObservable to webVRCamera to detect when the camera's pose has been updated (TrevorDev)
  • Added gltf light falloff Issue 4148 (sebavan)
  • Added falloff type per light to prevent material only inconsistencies Issue 4148 (sebavan)
  • Added WeightedSound; selects one from many Sounds with random weight for playback. (najadojo)
  • Added HDR support to ReflectionProbe (Deltakosh)
  • Added ACES ToneMapping to the image processing to help getting more parity with other engines (sebavan)
  • Added Image Processing to the particle system to allow consistency in one pass forward rendering scenes (sebavan)
  • Added Video Recorder Issue 4708 (sebavan)
  • Added support for main WebGL2 texture formats (PeapBoy)

glTF Loader

  • Added support for KHR_texture_transform (bghgary)
  • Added onNodeLODsLoadedObservable and onMaterialLODsLoadedObservable to MSFT_lod loader extension (bghgary)
  • Added glTF loader settings to the GLTF tab in the debug layer (bghgary)
  • Added debug logging and performance counters (bghgary)
  • Added support for EXT_lights_imageBased (bghgary)
  • Added support for MSFT_audio_emitter (najadojo)
  • Added support for custom loader extensions (bghgary)

Viewer

  • No fullscreen button on small devices (RaananW)
  • Nav-Bar is now displayed on fullscreen per default (RaananW)
  • Viewer configuration supports deprecated values using the new configurationCompatibility processor (RaananW)
  • Shadows will only render while models are entering the scene or animating (RaananW)
  • Support for model drag and drop onto the canvas (RaananW)
  • New lab feature - global light rotation #4347 (RaananW)
  • New NPM package - babylonjs-viewer-assets, to separate the binary assets and the code of the viewer (RaananW)
  • A new HD-Toggler button allows setting a better hardware scaling rate (RaananW)
  • An initial support for WebVR is implemented (RaananW)
  • It is now possible to choose the element that goes fullscreen in the default viewer (RaananW)
  • The default viewer has a plugin system with which new buttons can be added externally (RaananW)
  • The extended configuration is now the default when not providing the "extended" parameter (RaananW)
  • viewer.updateConfiguration also accepts a URL to download configuration remotely (RaananW)
  • Viewer supports 3D printing on windows 10 (RaananW)
  • The viewer's environment map is using the new .env feature (RaananW)

Documentation

  • Added all code comments for GUI

Bug fixes

  • VR experience helper will now fire pointer events even when no mesh is currently hit (TrevorDev)
  • RawTexture.CreateAlphaTexture no longer fails to create a usable texture (TrevorDev)
  • SceneSerializer.SerializeMesh now serializes all materials kinds (not only StandardMaterial) (julien-moreau)
  • WindowsMotionController's trackpad field will be updated prior to it's onTrackpadChangedObservable event (TrevorDev)
  • VR experience helper's controllers will not fire pointer events when laser's are disabled, instead the camera ray pointer event will be used (TrevorDev)
  • Node's setParent(node.parent) will no longer throw an exception when parent is undefined and will behave the same as setParent(null) (TrevorDev)
  • Mesh.MergeMeshes flips triangles on meshes with negative scaling (SvenFrankson)
  • Avoid firing button events multiple times when calling vrController.attachMesh() (TrevorDev)
  • Parse geometry when load binary mesh (SinhNQ)
  • Removing observers during observable notify should not skip over valid observers (TrevorDev)
  • Initializing gamepadManager should register the gamepad update events (TrevorDev)
  • Do not generate mipmaps for RawCubeTexture if OES_texture_float_linear and/or EXT_color_buffer_float extensions are not supported (PeapBoy)
  • Do not modify passed camera array parameter when creating a default pipeline (TrevorDev)
  • Fixed issue where gaze trackers were appearing even after leaving VR (atulyar)
  • AdvancedDynamicTexture should not overwrite skipOnPointerObservable to false (TrevorDev)
  • Fixed issue where VRExperienceHelper.onExitingVR observable was being fired twice (atulyar)
  • GizmoManager should hide existing gizmos if a non-attachable mesh is selected (TrevorDev)
  • Ignore isPickable = false for vr ray casting if the mesh's name matches the specified floorMeshName to maintain backwards compatability (TrevorDev)

Core Engine

  • Fixed shadowEnabled property on lights. Shadows are not visible anymore when disabled (sebavan)
  • Physics unregisterOnPhysicsCollide didn't remove callback correctly #4291 (RaananW)
  • Added missing getter and setter for global exposure in ColorCurves (RaananW)
  • Fixed an issue with view matrix when ArcRotateCamera was used with collisions (Deltakosh)
  • Fixed a bug with setting unlit on PBRMaterial after the material is ready (Wrong dirty flags) (bghgary)
  • Fixed HighlightLayer support on browsers not supporting HalfFloat (sebavan)
  • Fixed support for R and RG texture formats (sebavan)
  • Fixed updatable parameter setting in the SPS (jerome)
  • Angular and linear velocity were using the wrong method to copy values to the physics engine (RaananW)
  • Fixed env texture generation in Byte Mode (sebavan)
  • Oimo.js now receives quaternion and not euler when a body is being constructed (RaananW)

Viewer

  • Fix Navbar Interaction on Mozilla/Firefox (SzeyinLee)
  • Fix Animation Slider Interaction on Mozilla/Firefox (sebavan)
  • Fix Animation Slider Clickable area size Cross Plat (sebavan)
  • Ground material didn't take the default main color is no material definition was provided (RaananW)
  • Model configuration was not extended correctly if loaded more than one model (RaananW)
  • It wasn't possible to disable camera behavior(s) using configuration #4348 (RaananW)
  • Animation blending was always set to true, ignoring configuration #4412 (RaananW)
  • Animation navbar now updates correctly when a new model is loaded #4441 (RaananW)
  • Non-normalized meshes didn't center and focus correctly (RaananW)
  • Meshes with skeletons could have incorrect animations (RaananW)
  • Removed element IDs from viewer's templates to allow muitiple viewers in a single page #4500 (RaananW)
  • Viewer is not using Engine.LastCreatedScene anymore, to support multiple viewers in a single page #4500 (RaananW)
  • Template location was ignored if html was defined (RaananW)
  • Drag and Drop only worked if a model was already loaded before (RaananW)
  • It was not possible to add new custom optimizers, only use existing ones (RaananW)
  • Button texts were truncated incorrectly (RaananW)
  • Animation names with more than one word didn't work correctly (RaananW)

Loaders

  • STL Loader only supported binary downloads and no data: urls #4473 (RaananW)
  • OBJ Loader is now an async loader #4571 (RaananW)

Breaking changes

  • Fixing support for R and RG texture formats made us remove TextureFormat_R32F and TextureFormat_RG32F as they were mixing formats and types. Please, use the respective TextureFormat_R and TextureFormat_RG with the Float types (sebavan)
  • Replacing scene.onRenderingGroupObservable by onBeforeRenderingGroupObservable and onAfterRenderingGroupObservable to prevent the stage check (sebavan)