New: Pano-type Editor Mode in the VTour Editor:
Interactively change the pano-type (sphere, cylinder, flat), adjust the horizontal field-of-view and vertical offset,
set viewing and zooming limits, define north and level the image.
New: Support using addevent also for all events from all by default included krpano plugins.
New: fovtype=SFOV - let the field-of-view be based on the total screen size of the device.
Could be used to use the same fov/zoom regardless how rotating the device or to be independent of the browser window size.
New: combobox.xml - oninit event for dynamically styling the item,
new itemlayer variable for direct access to the textfield layer element of the item.
New: Optional loaddone callbacks for the loadpano / loadxml / loadscene actions.
New/Experimental: includexml(url) and
includexmlstring(string) actions - dynamically load/add xml content.
This will not change the pano image or trigger any events. Only new added "preinit" actions will get called.
New: roundval(var,-1) with -1 as
decimal places parameter, then an automatic number of decimal places will be used, from 1 to 6, without unnecessary trailing zeros.
New: image.tileoverlap setting for using custom tiles that have tile-overlap-border around the tile-image.
New: The hotspot.getcenter(h,v,fov*) function
uses a better algorithm for finding the hotspot center now (center of a bounding-box instead of point-averaging) and
provides now optionally also the fov-coverage value of the hotspot.
Change: The new control.mode setting merges and replaces the separate
When different control modes should be used, they should be set using the devices
or device check settings.
For backward-compatibility the old settings are also still supported and working.
Change: vtourskin.xml - remove the automatic bouncinglimits disabling for partial-panos.
Instead the bouncinglimits behavior should be set manually, either using the krpano Tools VTour Editor or manually in the xml.
Change: The App/UI-runtime/framework of the 'krpano Tools' app (64bit version only) was updated to NWJS 0.50 and Chromium 87.
This should provide a better GPU support and more stability on newer OSX versions.
ARM Macs are also supported by this (but with the Rosetta 2 for the moment).
Fix: When using <include> urls with dynamic placeholders (e.g. like %$random%) the file could got requested multiple times.
Fix: Workaround for an iOS 14 gyroscope bug: the Device Orientation Event (used for Gyro control and WebVR) provides shaky / wobbling movement data
in that iOS version, but the alternative Device Motion Event works, so this is used by default now for these iOS versions.
Fix: When using the view.oz setting (for dollhouse- or parallax-views) together with the view/fisheye-distortion,
then the rendering and the hotspot-hit-testing were wrong.
Fix: When setting zorder of a layer back to null or to an empty string, the layer ordering didn't get updated.
Fix: When dynamically changing the image.voffset value of a multires-cylinder pano, the viewing limits weren't correctly updated.
Fix: Avoid a wrong 'iOS Desktop-Mode' detection on very old Mac Safari versions.
Fix: In the Flash version contextmenu separators were wrongly added for items that are hidden by showif conditions.
Fix: Workaround for an IE11/Edge bug: when exiting the fullscreen mode via the contextmenu the viewer loses the keyboard-input-focus (and would require a click to get it again).
Fix: On touch devices WebGL-hotspots could get a wrong 'onover' event when behind a layer.
Fix: On WebGL-Textfield-hotspots without background (bg=false) but with borders, the shadows were rendered wrong (clipped).
Fix: The children layers of non-distorted CSS3D-hotspots were always scaled by the scale setting, even when scalechildren was set to false.
Fix: The size of hotspots without zoom=true or distorted=true in VR is now always be relative to fixed basesize of 1000 instead of be relative to the actual screen/window-size.
This way the size of the hotspot don't change on different screen sizes.
Fix: Depthbuffer accuracy problems on Mac Safari when using depthmap panos and postprocessing filters.
Fix: Support the image.cubelabels setting also for the 'short' multi-res syntax.
Fix: defaultskin.xml - the buttons can get wrongly placed when the viewer html element will be sized to 0/0.
Fix: combobox.xml - move the zorder of the element to top when opening the combobox to make sure beeing above other elements.
Fix: Makepano tool - the Photosphere XMP Exif metadata for partial-panos wasn't used in the automatic sphere-to-cube conversion
and the viewing limits based on that data weren't written to the xml when not using the sphere-to-cube conversion and when the hfov was 360.
Fix: Makepano tool - spherical stereo-panos were wrongly written as cylinder panos into the xml when converttocube is disabled.
Fix: Makepano tool - avoid crashing or a wrong xml output (invalid prealign and hlookat values) when using input-images with an invalid/broken Ricoh Theta EXIF metadata.
New: Experimental support for using textured 3D-Models instead of
depthmapped-panoramic images (Example).
Such 3D-Models could be generated using Blender and the
PanoCamAdder Add-on (or any other 3D-Modeling software).
Potential usage cases would be better and more complete 'Dollhouse views', nicer 3D-scene-transitions and eventually
also a mixed display together with a higher-resolution panoramic image. Note: the details, xml/usage-API and performance of that feature is still work-in-progress and
will change with the next releases.
New: Support also the Wavefront OBJ file-format
for Depthmap 3D-Models.
It is similar to STL, but additionally also supports texture-mapping information.
New: Special import settings for Depthmap 3D-Models:
They can be used to align the 3D-Model correctly for usage inside krpano.
These settings work for STL, OBJ and DEPTH files and replace the previously undocumented and STL-only
stlaxis, stlscale, stlmove and stlrotate settings.
New: depthmap.waitforload setting to tell the viewer to wait
with the rendering/displaying until the depthmap is loaded and ready. Without that setting the pano would be shown in spherical
or cubical projection until the depthmap is ready.
New: Improved xml file loading performance:
<include> files will be loaded in parallel
and duplicated load requests automatically be merged and cached. With this the startup time will be reduced,
especially when including a lot additional xml files.
New: A setting to customize the user control friction stop/cutoff-speed: control.frictionstop
That setting is a relative factor that defines at what movement speed the movement should completely stop.
Additionally the default value for this setting has been reduced, in previous versions it was 0.04, now it is 0.01,
that means a slightly smoother fading out of the movement.
New: Support external mouse control on touch devices (iOS 13.4+ and Android).
Can be optionally disabled by the touchdevicemousesupport setting.
New: isset() and isvalue() expression functions
for easier checking if a variable is existing and if its value is not an empty string.
New: Avoid the creation of temporary files during the sphere-to-cube conversion on smaller input-images for a slightly faster pano building.
Adjustable by the new converttocubemaxwidth_inmem setting.
New: <include> elements inside <scene> elements will be not resolved and loaded on xml loading, but later when loading the actual scene.
This will speed up the startup-time when having a lot of scenes with <include> elements inside them.
New: Enable the Fullscreen Mode support for newer iPadOS versions.
New: Automatically internally downscale hotspot images that are too large for the current system.
A warning will be shown in the krpano log when this happens.
For manual control to avoid downscaling
and directly loading a smaller image instead, there is the new
New: hotspot.borderhittest setting for optionally also using the border-line of polygonal hotspots for hit-testing.
Fix: WebVR - wrong (too small) 'stage' size when using the WebXR API and the latest Oculus Browser version (9.1).
This browser version wasn't resizing the WebGL canvas to the requested pixelsize and this was affecting the multiresolution-level selection (too low-res view in some cases) and the size of non-distorted hotspots.
Fix: WebVR - rendering problems during pano-blending and when using post-processing in VR in the Oculus Browser when using the WebXR API.
Fix: WebVR - depthmap_navigation.xml - support VR controllers with thumbsticks when using the WebXR API.
Fix: WebVR - optionally support also the WebXR API in the Firefox Reality browser.
Fix: Catch and handle JS errors when trying to detect WebXR support in an iframe that doesn't allow WebXR usage.
Fix: Scrolling the krpano log was not possible on 'Notch'-iPhones with iOS 13.4.
Fix: Opening the contextmenu by long-taps wasn't working sometimes when using capturetouch=false on Android devices.
Fix: When using the setting safearea=false on children layers, their position was wrong.
Fix: When changing the display.safearea setting from test:... back to auto, the pano-canvas position wasn't correctly updated.
Fix: The onautorotateoneround event was using a wrong hlookat position when loading an new pano/scene without the KEEPVIEW flag within it.
Fix: The krpano Array getItem() function returns now null instead of the first array item when calling it with 0 or '' as parameter.
Fix: The loading state reported by the loadstate variable was wrong when using cubestrip or single-resolution sphere panos.
Fix: Makepano tool - The embedded sRGB ICC-color-profile was broken when using the NORMAL droplets.
Fix: Makepano tool - When using the NORMAL droplets with small images, then the output cube-images were sometimes wronlgy upscaled to the maxcubesize size.
Fix: Makepano tool - Generate spherical preview images instead of cubical ones (cubestrip) for sphereical panos.
Fix: Panotour Pro Update Package - remove several outdated device specific checks and workarounds from the Panotour Pro xml templates. This should fix some sound, video and web-content-hotspot problems on iOS devices.
Fix: WebGL-rendered hotspots with very small scale values failed hit-testing (and didn't respond to events like clicking or hovering).
Fix: The onhover events added by addevent only worked when the element itself also had an onhover event.
Fix: The view.dir direction vectors are now also respecting the view.camroll rotation.
This also affects the correct 3D location of 3D sounds when the view is rotated by the camroll setting,
e.g. when using the gyro or when tilting the head left/right in VR.
Fix: The view.camroll rotation is also respected by the users panning controls and the viewing range-limits now.
Fix: The new follow pano-dragging control mode wasn't supported on touch-devices.
Fix: Fully support nested styles - a <style> element can have a style attribute too.
Fix: The content-dependent sub-division of depth-geometry data was only done for stl files, but missing for depth files.
Fix: The STL-to-DEPTH converter was using a fixed number precision, now the precision is based on the actual data.
Fix: vtourskin.xml - use the autotour autorotate events only when the skin_settings.autotour setting is actually enabled (to avoid interference with custom autorotate usages).
Fix: vtourskin.xml - using the littleplanetintro disables control.bouncinglimits setting.
Fix: Gyro/WebVR - in iOS 13.4 beta / Safari 13.1 the DeviceMotionEvent is broken
and it is unclear if Apple will fix that.
Therefore the DeviceOrientationEvent, which is working, will be automatically used as alternative instead on the related systems.
Fix: WebVR - when the setting mobilevr_sensor=0 was used, then entering the VR mode was working only on the first time.
Fix: Tab-characters in the krpano log were wrongly displayed as several ' '.
Fix: Bingmaps Plugin - the mouse-wheel-zooming was wrongly centered.
Fix: Googlemaps Plugin - UI buttons from the Googlemaps API itself were not working/touchable on iOS.
Fix: Makepano tool - the EXIF parsing of the Ricoh Theta heading value failed in some cases.
Fix: Custom Tile-URLs example - the customParseTilePath() function wasn't adding
the baseindex to the level-index.
This was corrected previously in the viewer and now also the example was adjusted for that correction.
Fix: Panos with a preview-pano-image in spherical format got a wrong maxpixelzoom limitation in some cases (a bug only in version 1.20.3).
Fix: Some combination of using different pano-types for the preview-pano-image and the main-pano-image were not working.
Fix: Missing onpreviewcomplete event when using a preview-pano-image in spherical format together with non-tiled spherical pano-image.
Fix: The zero-padding of the level-index doesn't match between the xml and the generated tile-names when using more then 9 resolution levels and the new shorter xml syntax.
Fix: Avoid a unintentionally triggering of the log-opening touch-gesture on small or hidden viewer windows.
Additionally the log-opening touch-gesture can be also disabled with the logkey=false setting.
New: follow pano-dragging control mode - in that mode the view will smoothly follow where the user will drag the view (Example).
New: The tour_testingserver offers a new -url=... parameter for setting a custom startup url (relative to the server root).
New: It's now possible to define an optional rendering callback for post-processing shaders.
It will be call every time before processing an shader and can be used to update shader settings depending on the current state.
New: image.crop setting for dynamically using only a part of the input pano image or video.
Change: Don't send overwriteable ([OW] prefix) log-messages to the browser console (for better performance when doing a lot of logging).
Fix: The sphere-to-cube conversion hangs/freezes on large images.
Fix: Support Samsung devices with varying screen-resolutions in MobileVR/Cardboard mode.
This is done by a new internal database that directly stores the physical screen-sizes.
Additionally there is a new xml-based mobilevr_device_database
(defined in the webvr.xml). That database allows an easy custom adding or editing of devices.
To control which databases should to used be there is a new mobilevr_database_support setting.
Fix: The url placeholders were not working in short-multires-syntax image paths.
Fix: The device.mobile/tablet/desktop settings were wrong in iOS 13 Desktop Mode.
Fix: Mark several CSS properties of the krpano log with 'important' to avoid that they might getting overwritten by global CSS styles.
Fix: Support multiple ! not operators in expressions (e.g. !!var).
Fix: The sounds kept playing when removing the viewer.
Fix: Custom soundinterface rootpath paths work now also again without the need for a trailing slash '/' character.
Fix: The Encrypt Tool was crashing on xml files that contain the xml-comments end-tag --> without the beginning-tag <!--.
Fix: The hotspot hovering wasn't working in the Edge browser when used on devices with touch-screens.
Fix: The Update Tool didn't add the new license information.
Fix: Black screen when changing the video-source of a pano-video from a power-of-two-sized video-resolution to a non-power-of-two-sized video-resolution.
New version number 1.20, no 'pre-release' / 'pr' state anymore.
The previous krpano-license and the krpano-maps-plugin-license were merged into one new single license.
Additionally the new license offers also new features. Upgrading is possible here.
Old licenses still fully work, but only without the new features.
New support for Multi-Resolution spherical and cylindrical panos
(with any field-of-view, 360-around or partial-panos).
Optimized for image-quality and rendering-performance.
Especially very suitable for very large panos (Gigapixel and up) to avoid the need to convert to cube
and for partial-panos.
New support for Depthmaps for
adding 3D-depth to panoramic images.
Allows 3D-stereo-depth without the need for stereo-images, post-perspective changes / 3D-movements,
3D-transitions between panos.
Easy to use tools for creating the depthmaps are also available.
Much improved VR-Support: 6DoF positional-tracking, VR-controllers, improved devices support,
faster Cardboard rendering.
All fully customizable.
Polygonal hotspots rendering via WebGL: stereo and VR-support, faster rendering.
Improved cross-browser / cross-device mouse-wheel and touch-pad support - get the same
zoom-amount and zoom-speed on all systems.
New and slightly updated and restructured web design.
The download packages include now also a full offline documentation.
Only 64-bit versions for Windows by default.
Technically 32-bit versions would be still easily possible,
but normally there should be no need for them anymore.
But if there is a need, then on request it would be still possible to provide 32-bit versions.
On Mac OSX all applications are now also available as 64-bit version.
Change: The WebGL stencil and
depth settings are enabled by default now.
They are requiered for correct depthmap- and polygonal-hotspot rendering support.
Change: The WebGL antialias setting
is not-set/undefined by default now. In this case the viewer tries to automatically
decides which setting would be the best for the best performance on the current system.
Change: Do the local-file-access tests on the given xml file (instead of on the html file) when there is one.
When there is no xml file set at startup, check inside the viewer the first loaded xml file for local-file-access
problems and report back to the embedding script.
New: Support for multi-resolution spherical and cylindrical pano-images in HTML5 (requires WebGL support from the browser).
New: Dedicated flat-pano support (flat = rectilinear-projection pano-images).
By using the new <flat> image declaration element.
Supports any field-of-view coverage, also larger than 1.0. For single- and multi-resolution.
New: Short-xml-syntax for multi-resolution images (optional, enabled by default):
Just one multires attribute
with all size information instead of several <level> elements.
Additionally also autodetect the image type also for multires panos, no need for
setting the pano-type explicitly anymore.
The tilde-key will be used now as log open/close key (instead of the 'O' key).
New debug/command input field in the log - activate by shift+tilde-key when the
debugmode is enabled and the log is open.
Can be used to show or change variables and to call actions.
New debugjsactions a
and debugjsplugins settings to
New debugkeys setting for enabling/disabling
the debugging-keys that are available when the log is opened.
The trace action support
several tags for output control: [HTML] for output html code,
[OW] for making the current line overwritable by the next trace,
[CLEARLOG] for clearing the log,
[MAXLINES=nn] for setting the maximum lines to keep in the log.
New: Support Data-Urls everywhere - with plain-text and base64 encoding.
New: Second inbetween Postprocessing shader step - allow postprocessing after the pano-rendering but before hotspot-rendering. E.g. for blurring only the pano in the background, but not the hotspots above.
See krpano.webGL.ppShaderArray2 for more.
New: Several rendering performance improvements.
New: Faster viewer startup, compile the internal WebGL rendering shaders only on first use
and cache already compiled shaders.
New: Improved pano loading state handing - never blend before having a full filled view.
New PRELOAD flag for loadpano/loadscene -
load the full resolution of the next pano before blending to it.
New: Provide an .addevent attribute postfix
and an addevent() function
for adding additional/mulitple events. Can be used in styles to avoid conflicts
when using the same events.
New: Load the maps-plugin first after opening the maps. This can speed-up the pano loading
because the map tiles are getting loaded only later when the user opens the map.
Adjustable by the new skin_settings.maps_loadonfirstus setting.
New: skin_settings.followmousecontrol setting to enable a follow-mouse control.
New: Add an UI for the new iPhone landscape-mode fullscreen mode.
New: Show the loading info only when the loading takes longer than 2.0 seconds.
New: The 'button glowing' is now implemented by addevent events,
so that the layer itself can use the normal events.
Change: Use separate keeplookingdirection settings for for gyro and webvr usage.
Fix: The rotation of the little-planet-intro wasn't working.
Fix: The gyro-icon wasn't showing up when the the little-planet-intro was enabled.
Fix: The the show the 'title' in the special WebVR Enter-VR button only when a title is actually defined.